温馨提示×

centos k8s为什么部署失败

小樊
33
2026-10-15 03:10:58
栏目: 智能运维

在 CentOS 上部署 Kubernetes(k8s)失败 的原因非常多,需要结合具体报错来判断。下面我按最常见原因给你一个系统性的排查清单,你可以对照看看是哪一种。


一、环境层面的常见问题(最高频)

1️⃣ 系统版本不兼容

  • CentOS 7 可以跑 k8s,但 CentOS 8 已 EOL,很多仓库失效
  • k8s 1.24+ 已移除 dockershim,必须配置 containerd 或 cri-o

✅ 建议:

cat /etc/centos-release
kubectl version --short

2️⃣ swap 未关闭(最常见)

kubelet 默认不允许 swap 开启

free -m

✅ 解决:

swapoff -a
sed -i '/swap/s/^/#/' /etc/fstab

3️⃣ 防火墙 / SELinux 问题

CentOS 默认:

  • firewalld 开启
  • SELinux enforcing

✅ 解决:

systemctl stop firewalld
systemctl disable firewalld

setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

4️⃣ 时间不同步

证书校验失败会导致部署直接失败

timedatectl

✅ 解决:

yum install -y chrony
systemctl enable --now chronyd

二、容器运行时问题

5️⃣ Docker / containerd 配置错误

k8s 1.24+:

  • ❌ 不能用 Docker 直接
  • ✅ 用 containerd

检查:

systemctl status containerd
crictl info

常见错误:

  • 没改 /etc/containerd/config.toml
  • SystemdCgroup = false(CentOS 必须是 true)

✅ 修复:

containerd config default > /etc/containerd/config.toml
sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
systemctl restart containerd

三、kubeadm 部署失败常见原因

6️⃣ kubeadm init 失败

常见报错:

  • failed to pull image
  • connection refused
  • preflight errors

✅ 排查:

journalctl -xeu kubelet
kubeadm config images list

✅ 国内加速:

kubeadm init --image-repository registry.aliyuncs.com/google_containers

7️⃣ 网络插件没装或装错(Calico / Flannel)

没有 CNI 插件:

  • Node 永远 NotReady
  • Pod 无法通信

✅ 示例(Calico):

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

四、资源 & 配置问题

8️⃣ 内存 / CPU 不足

  • Master 至少 2C2G
  • Node 至少 2C2G
nproc
free -h

9️⃣ hostname / hosts 不正确

hostnamectl set-hostname master

/etc/hosts 示例:

192.168.1.10 master
192.168.1.11 node1

五、你可以这样快速定位

请告诉我以下信息,我可以直接帮你精准判断:

  1. CentOS 版本
  2. k8s 版本
  3. 使用的运行时(Docker / containerd)
  4. 具体报错(最好贴 kubeadm init 或 kubectl get nodes 的输出)

如果你愿意,可以直接把 报错日志贴出来,我可以一步一步帮你排到能跑起来。

0 踩