在 CentOS 上部署 Kubernetes(k8s) 时,很多错误都集中在“环境准备”和“组件初始化”阶段。下面按最容易踩坑的步骤给你梳理,并说明原因和规避方法。
易错表现
NotReady正确做法
# 防火墙
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
CentOS 8+ 默认不再支持 docker,k8s 1.24+ 已移除 dockershim
易错点
native.cgroupdriver=systemddocker 示例
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
常见错误
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 → 网络插件直接失败
易错原因
Flannel 示例
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
⚠️ 如果有多网卡:
--iface=eth0
典型报错
failed to load kubelet config
检查
journalctl -u kubelet -f
常见原因:
hostnamectl set-hostname master
后果
yum install -y ntpdate
ntpdate time.windows.com
| CentOS | k8s 建议 |
|---|---|
| 7 | ✅ 稳定 |
| 8 | ⚠️ 已 EOL |
| Stream | ⚠️ 谨慎 |
CentOS 部署 k8s 最容易错的不是 kubeadm,而是“底层环境没准备好”
如果你愿意,我可以: