温馨提示×

centos k8s怎样排查故障

小樊
47
2026-09-21 15:24:58
栏目: 智能运维

在 CentOS + Kubernetes 环境中排查故障,一般遵循「从集群到节点,从节点到 Pod,从 Pod 到应用」的层级思路。下面给你一套实用排查流程和常用命令。


一、先确认集群整体状态

1. 查看集群组件状态

kubectl get componentstatuses

(新版本可能被 kubectl get --raw '/healthz' 替代)

2. 查看节点状态

kubectl get nodes -o wide

重点关注:

  • STATUS 是否为 Ready
  • ROLES
  • 内核版本、容器运行时

3. 查看节点详情

kubectl describe node <node-name>

重点看:

  • Conditions
  • Events
  • Allocatable / Allocated resources

二、Pod 故障排查(最常见)

1. 查看 Pod 状态

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

常见异常状态:

  • Pending:调度问题
  • CrashLoopBackOff:应用启动失败
  • ImagePullBackOff:镜像拉取失败
  • Terminating:删除卡住

2. 查看 Pod 详情

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

重点看:

  • Events(最重要)
  • 容器状态
  • 重启次数

3. 查看容器日志

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

4. 进入容器排查

kubectl exec -it <pod-name> -n <namespace> -- /bin/sh

三、调度 & 资源问题

1. Pending 常见原因

kubectl describe pod <pod-name>

常见:

  • 资源不足(CPU / 内存)
  • 节点亲和性 / 污点(Taint)
  • PV 未绑定

查看节点资源:

kubectl top node
kubectl top pod -A

2. 查看污点和容忍

kubectl get nodes -o json | jq '.items[].spec.taints'

四、网络问题排查(CentOS 常见)

1. 检查 kube-proxy & CNI

kubectl get pods -n kube-system

常见 CNI:

  • Calico
  • Flannel
  • Cilium

2. 检查网络连通性

kubectl exec -it <pod> -- ping <service-ip>
kubectl exec -it <pod> -- curl http://<service>:<port>

3. CentOS 特有注意点

  • firewalld
systemctl status firewalld
  • iptables / nftables
iptables -L -n
  • 端口转发
kubectl port-forward pod/<pod> 8080:80

五、节点级故障(CentOS)

1. 查看系统日志

journalctl -u kubelet -f
journalctl -u docker -f
journalctl -u containerd -f

2. kubelet 状态

systemctl status kubelet
systemctl restart kubelet

3. 磁盘 / 内存

df -h
free -m
top

六、控制平面故障(Master)

kubectl get pods -n kube-system

重点组件:

  • kube-apiserver
  • kube-controller-manager
  • kube-scheduler
  • etcd

查看 etcd:

kubectl exec -it etcd-master -n kube-system -- etcdctl endpoint health

七、常用排障“组合拳”

kubectl get pod -o wide
kubectl describe pod
kubectl logs
kubectl exec
journalctl -u kubelet

八、建议你补充的信息(方便更精准)

如果你现在正好有具体故障,可以告诉我:

  1. Pod 状态(CrashLoop / Pending?)
  2. kubectl describe pod 的 Events
  3. 是 Master 还是 Node 问题
  4. CentOS 版本 & K8s 版本

我可以直接帮你定位到根因。

0 踩