k8s健康检查与故障诊断
一、集群状态检查
-
检查节点健康状态
kubectl get nodes -o wide # 查看节点状态及基本信息 kubectl describe node <node-name> # 分析节点详细事件(如资源不足、网络异常) kubectl top nodes # 查看节点资源使用率(CPU/内存)
-
检查核心组件状态
kubectl get pods -n kube-system # 确认控制平面组件(如 apiserver、scheduler)运行状态
二、Pod 诊断
-
Pod 状态异常(Pending/CrashLoopBackOff)
kubectl get pods -A -o wide # 查看所有命名空间 Pod 状态及所在节点 kubectl describe pod <pod-name> # 查看事件日志(如调度失败、镜像拉取错误) kubectl logs -f <pod-name> # 实时跟踪容器日志 kubectl exec -it <pod-name> -- sh # 进入容器内部排查(如配置文件错误)
-
资源不足问题
kubectl get resourcequotas -n <namespace> # 检查命名空间资源配额限制 kubectl get pods --field-selector=status.phase=Pending # 筛选待调度的 Pod
三、服务与网络检查
-
Service 流量异常
kubectl get svc -o wide # 查看 Service 的 ClusterIP 和端口映射 kubectl get endpoints <service-name> # 验证后端 Pod 是否被正确关联
-
Ingress 配置问题
kubectl describe ingress <name> # 检查路由规则和证书配置
四、存储问题排查
```
kubectl get pvc -n <namespace> # 查看 PVC 绑定状态
kubectl describe pvc <pvc-name> # 分析存储类配置或容量不足问题
kubectl get pv # 检查持久卷可用性
```
五、事件与日志分析
kubectl get events -A --sort-by='.lastTimestamp' # 按时间排序查看集群事件
kubectl logs --previous <pod-name> # 查看容器崩溃前的日志(适用于 CrashLoopBackOff)
六、高级调试命令
kubectl api-resources # 列出所有资源类型(如排查 CRD 问题)
kubectl explain <resource> # 查看资源配置字段定义(如验证 YAML 合法性)
kubectl drain <node-name> --ignore-daemonsets # 排空节点(维护前隔离 Pod)
七、故障排查流程:
Pod 异常诊断路径:
Pending → 检查资源配额/节点容量
CrashLoopBackOff → 查看容器日志及 describe pod 事件
ImagePullBackOff → 验证镜像名称及私有仓库凭据
网络问题诊断路径:
Service 无端点 → 检查 Pod 标签匹配
Ingress 无法访问 → 检查路由规则及防火墙策略