K8s部署在CentOS上的兼容性问题及解决方案
CentOS版本需与Kubernetes版本严格适配,否则可能导致部署失败或集群异常:
较新的Kubernetes版本对内核版本有更高要求,旧内核(如3.x)可能存在cgroup内存泄露等问题(导致节点无法分配内存):
/etc/systemd/system/kubelet.service.d/10-kubeadm.conf),添加--feature-gates=KubeletPodResourcesGetAllocatable=false参数,然后重启kubelet服务。Docker版本需符合Kubernetes的要求(如Kubernetes 1.26.x需搭配Docker 20.10.x),否则可能导致容器无法启动:
sudo yum remove -y docker-ce docker-ce-cli containerd.io;yum-utils工具添加Docker仓库,安装兼容版本(如docker-ce-20.10.17、docker-ce-cli-20.10.17、containerd.io);/etc/docker/daemon.json),添加"exec-opts": ["native.cgroupdriver=systemd"],并重启Docker服务。Kubernetes对系统环境有特定要求,未正确配置会导致部署失败:
sudo setenforce 0临时关闭,修改/etc/selinux/config文件将SELINUX=enforcing改为SELINUX=disabled永久生效;sudo systemctl stop firewalld && sudo systemctl disable firewalld停止并禁用防火墙,或开放必要端口(如6443、10250-10252);sudo swapoff -a临时关闭,修改/etc/fstab文件注释掉swap行永久生效(Kubernetes要求节点禁用swap);chrony工具(sudo yum install -y chrony),并启动服务(sudo systemctl enable chronyd && sudo systemctl start chronyd),确保所有节点时间同步。Master节点与Worker节点的Kubernetes组件(kubelet、kube-proxy、kube-controller-manager等)版本需完全一致,否则可能导致集群异常:
kubeadm安装时,通过--kubernetes-version参数指定版本(如sudo kubeadm init --kubernetes-version=v1.26.0);kubeadm upgrade命令统一升级所有节点(如sudo kubeadm upgrade apply v1.26.1)。不同网络插件(如Calico、Flannel、Weave等)对Kubernetes版本有特定要求,需选择兼容的插件:
kubectl apply -f https://docs.projectcalico.org/v3.25/manifests/calico.yaml)。