以下是针对CentOS系统上Kubernetes集群的系统性故障排查流程,涵盖从集群状态到具体组件的多个维度:
首先确认集群基础状态是否正常,这是排查故障的第一步:
kubectl get nodes命令,确保所有节点处于Ready状态(若节点为NotReady,需进一步检查kubelet服务);kubectl get pods --all-namespaces,关注Pending(调度失败)、Error(运行错误)、CrashLoopBackOff(容器反复崩溃)等异常状态的Pod。kubectl get events --sort-by=.metadata.creationTimestamp查看集群近期事件(如Pod调度失败、节点资源不足等),事件会记录故障的关键线索;journalctl查看Kubernetes核心组件的日志,定位具体错误:
journalctl -u kubelet -f(kubelet服务日志,涉及Pod生命周期管理);journalctl -u kube-proxy -f(kube-proxy服务日志,涉及网络转发);journalctl -u kube-apiserver -f(API Server日志,涉及集群控制平面操作)。网络问题是Kubernetes常见故障类型,需重点排查:
ping <node-ip>测试节点之间网络是否通畅;iptables -L检查防火墙规则,确保Kubernetes相关端口(如6443/API Server、10250/kubelet)未被阻止;kubectl get pods -n kube-system查看插件Pod是否正常运行(状态应为Running)。存储问题会导致Pod无法启动或数据丢失,需确认:
kubectl get pv(持久卷)、kubectl get pvc(持久卷声明),确保PVC已绑定PV且状态为Bound;kubectl get storageclass检查存储类是否正确配置(如默认存储类是否存在);systemctl status nfs-server)。资源不足是Pod异常的常见原因,需监控节点与Pod的资源使用情况:
kubectl top nodes查看节点CPU、内存使用率;使用free -g(内存)、df -h(磁盘)确认系统资源是否充足;kubectl describe pod <pod-name>查看Pod的资源请求(requests)与限制(limits),若资源不足,需调整配置或扩容节点。容器日志能直接反映应用运行状态,需精准定位:
kubectl logs <pod-name> -n <namespace>查看Pod内主容器日志;若Pod有多个容器,需指定容器名(kubectl logs <pod-name> -c <container-name> -n <namespace>);-f参数实时跟踪日志输出(如kubectl logs -f <pod-name>);kubectl exec -it <pod-name> -n <namespace> -- /bin/bash(若容器无bash,可替换为sh)。kubectl debug命令创建临时调试Pod,进入容器环境检查问题(如kubectl debug -it <pod-name> --image=busybox --target=<container-name>);node-problem-detector(Kubernetes官方工具),监控节点内核错误、硬件故障等问题,并通过Event上报。Kubernetes组件版本不兼容会导致集群异常,需确认:
kubectl version查看客户端与服务端版本;dmesg -T查看内核日志(-T参数显示人类可读时间),检查是否有与Kubernetes相关的内核错误(如网络驱动问题);top(CPU)、free -m(内存)、iotop(磁盘IO)监控系统资源,排除系统级瓶颈。以上方法覆盖了CentOS环境下Kubernetes故障排查的全流程,可根据具体故障现象选择对应步骤逐步定位问题。操作前建议备份重要数据(如/etc/kubernetes目录),避免误操作影响集群稳定性。