在 CentOS 上部署 / 运行 Kubernetes(k8s),确实有不少“经典坑”,尤其是 CentOS 7/8 与不同 k8s 版本组合时。下面按 最常见、最容易踩 的分类说明,并给出规避建议。
✅ 建议:
✅ 建议:
yum install -y kernel
reboot
或直接使用 CentOS 8+ / Stream
✅ 解决:
systemctl stop firewalld
systemctl disable firewalld
或精确放行端口(不推荐新手)
✅ 临时:
setenforce 0
✅ 永久:
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
⚠️ 生产建议:理解策略后再开启
✅ 推荐方案:
安装 containerd:
yum install -y containerd
systemctl enable --now containerd
✅ 统一为 systemd:
# containerd
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
SystemdCgroup = true
kubelet:
--cgroup-driver=systemd
✅ 关闭:
swapoff -a
sed -i '/swap/d' /etc/fstab
✅ 建议:
必须放行:
常见原因:
✅ 提前设置:
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables=1
net.ipv4.ip_forward=1
EOF
sysctl --system
✅ 解决:
kubeadm config images pull --image-repository registry.aliyuncs.com/google_containers
常见原因:
✅ 必做:
chronyd / ntpdate
原因:
✅ 检查:
systemctl is-enabled containerd
systemctl is-enabled kubelet
CentOS 跑 k8s 的坑,90% 来自:旧系统 + 旧内核 + Docker + firewalld/SELinux/swap
✅ 最稳组合(2024+):
如果你愿意,可以告诉我:
我可以直接给你一套 “不踩坑部署清单”。