温馨提示×

centos k8s部署如何排查错

小樊
47
2026-07-09 14:24:51
栏目: 智能运维

CentOS 上部署 Kubernetes(k8s) 时,排查错误的思路通常是从 底层环境 → 容器运行时 → k8s 组件 → 应用层 逐层检查。下面给你一套实战型排查流程,非常适用于生产/测试环境。


一、先确认基础环境(常见坑)

1️⃣ 系统基本检查

cat /etc/centos-release
uname -r

✅ 要求:

  • CentOS 7.9 / 8 Stream
  • 内核 ≥ 3.10(推荐 ≥ 4.x)

2️⃣ 防火墙 & SELinux

systemctl status firewalld
getenforce

✅ 建议(测试环境):

systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

3️⃣ 交换分区(必须关闭)

free -m
swapon --show

✅ 关闭:

swapoff -a
sed -i '/swap/d' /etc/fstab

4️⃣ 网络参数

sysctl -a | grep bridge

✅ 内核参数示例:

cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF

sysctl --system

二、容器运行时(containerd / docker)

1️⃣ 查看运行时状态

systemctl status containerd
# 或 docker
systemctl status docker

❌ 常见问题:

  • socket 没启动
  • 版本不兼容 k8s

2️⃣ 检查运行时端口

ss -lntp | grep 6443
ss -lntp | grep 10250

三、Kubernetes 组件排查(核心)

1️⃣ 查看 kubelet 状态(最重要)

systemctl status kubelet
journalctl -u kubelet -f

✅ 常见错误:

  • failed to run kubelet
  • container runtime is not running
  • swap is enabled

2️⃣ 查看集群状态

kubectl get nodes
kubectl get pods -A
状态 说明
NotReady kubelet / 网络插件问题
Pending 资源不足
CrashLoopBackOff 应用不断重启

3️⃣ 查看 Pod 详细错误

kubectl describe pod <pod-name> -n <namespace>

重点关注:

  • Events
  • FailedMount
  • ImagePullBackOff
  • Node not ready

4️⃣ 查看 Pod 日志

kubectl logs <pod-name> -n <namespace>
kubectl logs <pod-name> -c <container> -n <namespace>

四、网络组件问题(flannel / calico)

1️⃣ CNI 是否启动

kubectl get pods -n kube-system

常见:

  • flannel 起不来 → pod cidr 不一致
  • calico 崩溃 → iptables / 路由冲突

2️⃣ 网络插件日志

kubectl logs -n kube-system kube-flannel-ds-xxx

五、kubeadm 初始化失败排查

1️⃣ 查看 init 错误

journalctl -xe
kubeadm reset

2️⃣ kubeadm 初始化常见错误

kubeadm init --pod-network-cidr=10.244.0.0/16

❌ 常见错误:

  • port 6443 already in use
  • crictl not found
  • container runtime is not running

六、证书问题(非常常见)

1️⃣ 证书是否过期

openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -dates

2️⃣ 证书失效表现

  • Unable to connect to the server
  • x509: certificate has expired

✅ 解决:

kubeadm certs renew all
systemctl restart kubelet

七、快速排错口诀(记住这个)

kubelet → runtime → network → certs

顺序:

  1. journalctl -u kubelet
  2. systemctl status containerd
  3. kubectl get nodes
  4. kubectl describe pod
  5. 证书、端口、网络

八、推荐排查命令速查表

# 查看节点
kubectl get nodes -o wide

# 查看所有组件
kubectl get pods -n kube-system

# 查看 kubelet 日志
journalctl -u kubelet -f

# 查看容器运行时
crictl ps

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

你可以把下面信息发我:

  1. CentOS 版本
  2. k8s 版本
  3. 容器运行时(docker / containerd)
  4. 具体报错日志(journalctl 或 kubectl describe)

我可以直接帮你精准定位 ✅

0