温馨提示×

centos k8s部署失败怎么查

小樊
40
2026-10-23 22:18:35
栏目: 智能运维

在 CentOS 上部署 Kubernetes(k8s)失败时,排查一般按「从下到上、从节点到集群」的思路来。下面是一套实用排查流程,适合大多数场景(kubeadm / 二进制 / 离线部署都适用)。


一、先看整体状态(最优先)

1. 节点状态

kubectl get nodes
  • NotReady → 网络 / kubelet 问题
  • 节点不在列表 → kubelet 没起来或证书问题

2. 组件状态

kubectl get cs
# 或
kubectl get componentstatuses

常见异常:

  • controller-manager
  • scheduler
  • etcd

二、查 kubelet(90% 问题在这)

1. 查看 kubelet 状态

systemctl status kubelet -l
journalctl -u kubelet -f

常见错误:

  • failed to load kubeconfig
  • cgroup driver mismatch
  • container runtime is not running

2. 确认容器运行时

docker info | grep -i cgroup
# 或
crictl info

⚠️ CentOS 常见坑:

  • cgroup driver 不一致(systemd vs cgroupfs)
  • 防火墙 / SELinux 没关

三、网络问题(最常见部署失败原因)

1. 防火墙

systemctl stop firewalld
systemctl disable firewalld

2. SELinux

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

3. 网桥 & 内核参数

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

4. 网络插件(Flannel / Calico)

kubectl get pods -n kube-system
kubectl describe pod <网络pod名> -n kube-system

四、kubeadm 初始化失败怎么查

1. 初始化日志

journalctl -xeu kubelet

2. 常见失败点

  • 端口被占用(6443 / 10250)
ss -lntp | grep 6443
  • 内存 / CPU 不足
  • hostname 不合法(不能有大写、下划线)

五、etcd 问题排查

kubectl get pods -n kube-system | grep etcd
kubectl logs etcd-<节点名> -n kube-system

常见问题:

  • 数据目录损坏
  • 时间不同步(务必 NTP)

六、时间同步(非常容易被忽略)

date
timedatectl status

建议:

yum install -y ntpdate
ntpdate cn.pool.ntp.org

七、快速自检清单(CentOS 专用)

✅ 防火墙关
✅ SELinux 关
✅ swap 关
✅ 时间同步
✅ cgroup 一致
✅ 端口未占用
✅ 镜像可拉取(或已导入)


八、如果你愿意,我可以直接帮你定位

你可以贴下面任意信息,我帮你精准分析:

  1. kubeadm init 报错全文
  2. journalctl -u kubelet 报错
  3. kubectl get nodes / pods -A 输出
  4. 你是 CentOS 几 + k8s 哪个版本 + 哪种部署方式

我可以一步一步带你修好。

0 踩