温馨提示×

centos k8s部署哪步易错

小樊
38
2026-09-03 07:26:36
栏目: 智能运维

CentOS 上部署 Kubernetes(k8s) 时,很多错误都集中在“环境准备”和“组件初始化”阶段。下面按最容易踩坑的步骤给你梳理,并说明原因和规避方法。


一、最易错步骤总览(按出错频率)

  1. 防火墙 / SELinux / 交换分区未正确关闭
  2. 容器运行时(docker / containerd)配置错误
  3. kubeadm init 参数错误(尤其 CRI 和镜像源)
  4. 网络插件(Calico / Flannel)部署失败
  5. 节点 NotReady(证书 / kubelet 配置问题)
  6. 时间不同步(NTP)
  7. CentOS 版本与 k8s 版本不兼容

二、逐步易错点详解

1️⃣ 关闭防火墙 / SELinux / Swap(最高频)

易错表现

  • 节点一直 NotReady
  • Pod 无法通信
  • kubelet 启动失败

正确做法

# 防火墙
systemctl stop firewalld
systemctl disable firewalld

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

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

注意swapoff -a 重启后可能失效,一定要改 fstab


2️⃣ 容器运行时配置(docker vs containerd)

CentOS 8+ 默认不再支持 docker,k8s 1.24+ 已移除 dockershim

易错点

  • 用 docker 但没配置 native.cgroupdriver=systemd
  • containerd 没改 sandbox 镜像

docker 示例

cat > /etc/docker/daemon.json <<EOF
{
  "exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
systemctl restart docker

containerd 易错

containerd config default > /etc/containerd/config.toml
# 修改 sandbox_image 为国内镜像
systemctl restart containerd

3️⃣ kubeadm init 参数错误(非常关键)

常见错误

detected unsupported cgroup driver
image pull failed

推荐命令(国内环境)

kubeadm init \
  --image-repository registry.aliyuncs.com/google_containers \
  --kubernetes-version v1.28.0 \
  --pod-network-cidr=10.244.0.0/16

✅ 不指定 --pod-network-cidr → 网络插件直接失败


4️⃣ 网络插件部署失败(Calico / Flannel)

易错原因

  • CIDR 不匹配
  • 节点网卡识别错误

Flannel 示例

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

⚠️ 如果有多网卡:

--iface=eth0

5️⃣ kubelet 启动失败

典型报错

failed to load kubelet config

检查

journalctl -u kubelet -f

常见原因:

  • cgroup driver 不一致
  • 主机名不能解析
hostnamectl set-hostname master

6️⃣ 时间不同步

后果

  • 证书失效
  • 节点无法加入
yum install -y ntpdate
ntpdate time.windows.com

7️⃣ CentOS 版本问题

CentOS k8s 建议
7 ✅ 稳定
8 ⚠️ 已 EOL
Stream ⚠️ 谨慎

三、最推荐的“避坑顺序”

  1. 系统初始化(防火墙 / SELinux / swap)
  2. 配置时间同步
  3. 安装容器运行时(containerd 优先)
  4. kubeadm init
  5. 网络插件
  6. 加入 node

四、一句话总结

CentOS 部署 k8s 最容易错的不是 kubeadm,而是“底层环境没准备好”

如果你愿意,我可以:

  • 给你一套 CentOS 7 + k8s 1.28 完整可复制脚本
  • 或针对你 当前报错日志 精准分析

0