在 CentOS 上部署 Kubernetes(k8s)失败时,排查一般按「从下到上、从节点到集群」的思路来。下面是一套实用排查流程,适合大多数场景(kubeadm / 二进制 / 离线部署都适用)。
kubectl get nodes
NotReady → 网络 / kubelet 问题kubectl get cs
# 或
kubectl get componentstatuses
常见异常:
controller-managerscheduleretcdsystemctl status kubelet -l
journalctl -u kubelet -f
常见错误:
failed to load kubeconfigcgroup driver mismatchcontainer runtime is not runningdocker info | grep -i cgroup
# 或
crictl info
⚠️ CentOS 常见坑:
cgroup driver 不一致(systemd vs cgroupfs)systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
modprobe br_netfilter
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
sysctl --system
kubectl get pods -n kube-system
kubectl describe pod <网络pod名> -n kube-system
journalctl -xeu kubelet
ss -lntp | grep 6443
kubectl get pods -n kube-system | grep etcd
kubectl logs etcd-<节点名> -n kube-system
常见问题:
date
timedatectl status
建议:
yum install -y ntpdate
ntpdate cn.pool.ntp.org
✅ 防火墙关
✅ SELinux 关
✅ swap 关
✅ 时间同步
✅ cgroup 一致
✅ 端口未占用
✅ 镜像可拉取(或已导入)
你可以贴下面任意信息,我帮你精准分析:
kubeadm init 报错全文journalctl -u kubelet 报错kubectl get nodes / pods -A 输出我可以一步一步带你修好。