温馨提示×

如何排查centos k8s问题

小樊
53
2026-09-06 11:30:51
栏目: 智能运维

在 CentOS 上排查 Kubernetes(k8s)问题,通常遵循**“从整体到节点,从节点到 Pod,从 Pod 到容器”的排查思路。下面给你一套实用、可操作的排查流程**。


一、先确认集群整体状态

1. 查看集群节点状态

kubectl get nodes
kubectl get nodes -o wide

常见异常:

  • NotReady:节点 kubelet 或网络异常
  • SchedulingDisabled:被 cordon

2. 查看集群组件状态(如有)

kubectl get cs

新版本 k8s 可能已废弃,可忽略


二、节点级排查(CentOS 重点)

1. 登录问题节点

ssh node-ip

2. 检查 kubelet 状态

systemctl status kubelet
journalctl -u kubelet -f

常见问题:

  • kubelet 没启动
  • 证书过期
  • 配置错误(kubeconfig)

3. 检查 container runtime

CentOS 常见:

  • Docker
  • containerd
# Docker
systemctl status docker
journalctl -u docker -f

# containerd
systemctl status containerd
ctr containers list

4. 检查系统资源

top
free -h
df -h

重点看:

  • 磁盘满(/var/lib/docker 或 /var/lib/kubelet)
  • 内存不足(OOM)

5. 检查防火墙 & SELinux

systemctl status firewalld
getenforce

常见坑:

  • firewalld 未关
  • SELinux 导致挂载失败

三、Pod 级排查

1. 查看 Pod 状态

kubectl get pods -A
kubectl get pods -n <namespace>

状态含义:

  • Pending:调度问题
  • CrashLoopBackOff:容器反复崩溃
  • ImagePullBackOff:镜像拉取失败
  • Terminating:删除卡住

2. 查看 Pod 详情

kubectl describe pod <pod> -n <ns>

重点看:

  • Events
  • FailedScheduling
  • 容器退出码

3. 查看容器日志

kubectl logs <pod> -n <ns>
kubectl logs <pod> -c <container> -n <ns>
kubectl logs <pod> --previous

四、网络问题排查(CentOS + k8s 高频)

1. 检查网络插件

常见:

  • Calico
  • Flannel
  • Cilium
kubectl get pods -n kube-system

2. 节点网络检查

ip a
ip route
ping <pod-ip>

3. 端口与防火墙

firewall-cmd --list-all

k8s 常用端口:

  • 6443(API)
  • 10250(kubelet)
  • 8472(Flannel VXLAN)

五、常见典型问题速查

1. Pod 一直 Pending

kubectl describe pod <pod>

看:

  • 资源不足
  • nodeSelector / taint

2. 镜像拉不下来

  • 私有仓库未配置 secret
  • 节点无法访问外网
  • 镜像名写错

3. 节点 NotReady

  • kubelet 挂了
  • 磁盘压力(DiskPressure)
  • 网络断了

4. 集群无法访问

  • API Server 挂
  • 证书过期
  • kubeconfig 错

六、排错命令速查表

kubectl get events --sort-by=.metadata.creationTimestamp
kubectl describe node <node>
kubectl exec -it <pod> -- sh
kubectl drain <node> --ignore-daemonsets
kubectl get componentstatuses

七、建议的排错顺序(总结)

  1. kubectl get nodes
  2. kubectl get pods -A
  3. kubectl describe pod
  4. kubectl logs
  5. 登录节点看 kubelet / docker / 系统资源
  6. 检查网络 & 防火墙

如果你愿意,可以告诉我:

  • CentOS 版本
  • k8s 版本
  • 具体报错(命令输出)

我可以帮你精准定位某一类问题(比如 NotReady、网络不通、Pod 起不来)。

0 踩