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 無法訪問 → 檢查路由規則及防火墻策略 ?