故障診斷
更新時間 2025-07-03 21:54:34
最近更新時間: 2025-07-03 21:54:34
分享文章
本節介紹故障診斷。
概述
分布式容器云平臺提供一鍵故障診斷能力,包括Service診斷、節點診斷、Pod診斷、Ingress診斷,輔助定位集群中出現的異常問題。
| 診斷維度 | 說明 |
|---|---|
| Service | 診斷Service相關問題,例如Service后端就緒Pod、異常事件信息等。 |
| 節點 | 診斷節點相關問題,例如K8s節點NotReady等。 |
| Pod | 診斷K8s Pod狀態異常相關的問題,例如Pod啟動失敗、Pod頻繁重啟等。 |
| Ingress | 診斷Ingress相關流量配置問題。 |
前提條件
操作步驟
配置故障診斷
注意
使用故障診斷功能時,系統將在您的集群節點上執行數據采集程序并收集檢查結果。采集的信息包括系統版本、負載、Docker、kubelet等運行狀態以及系統日志中的關鍵錯誤信息。數據采集程序不會采集您的業務信息及敏感數據。
配置Service、節點、Pod、Ingress等診斷操作類似。下文以配置節點診斷為例,介紹如何配置故障診斷功能。
登陸分布式容器云平臺,在左側導航欄中選擇集群資源 > 集群管理,進入注冊集群列表頁。
在注冊集群列表中點擊需要配置故障診斷的集群,進入單集群管理頁面。
在單集群管理頁面導航欄中選擇運維管理 > 故障診斷,進入故障診斷頁面。
在故障診斷頁面,點擊節點診斷頁面,在選擇節點面板,選擇需要診斷的節點名稱,點擊確定按鈕發起診斷。
在診斷列表頁面可查看診斷進展。診斷完成后,診斷頁面將顯示診斷結果。
查看診斷結果
在故障診斷頁面診斷列表的操作列,點擊目標診斷報告對應的診斷詳情,在診斷詳情頁面查看詳細診斷結果,診斷項狀態為異常時,需要確認,如果是引起集群異常的問題需要處理。
注意
根據集群配置,具體檢查項可能稍有不同。實際結果請以診斷頁面結果為準。
支持的診斷項
| 診斷維度 | 診斷項 | 說明 | 修復方案 |
|---|---|---|---|
| Service | 檢查Service后端Ready Pod數量 | 檢查Service后端Ready Pod數量。 | 檢查業務Pod狀態,保證Pod存在且處于Ready狀態。 |
| 檢查Service是否存在異常事件 | 檢查集群中是否存在與該Service相關的異常事件。 | 請檢查并處理Service異常事件中的描述信息,若無法處理,請提交工單。 | |
| 節點 | 檢查節點是否存在 | 檢查集群中是否存在該節點。 | 請檢查Node在集群中是否存在。 |
| 檢查節點狀態是否Ready | 檢查節點在集群中的狀態是否為Ready。 | 請登錄到節點上執行systemctl status kubelet或journalctl -exu kubelet查看節點上kubelet進程異常日志并嘗試修復。 | |
| 檢查節點狀態是否不可調度 | 檢查節點是否不可調度,不可調度的節點會影響Pod的正常運行。 | 節點不可調度,請檢查節點調度設置。 | |
| 檢查節點CPU裝載率是否過高 | 檢查節點CPU資源分配率是否過高。 | 請檢查節點上pod的CPU request值設置的合理性。 | |
| 檢查節點內存裝載率是否過高 | 檢查節點內存資源分配率是否過高。 | 請檢查節點上pod的Memory request值設置的合理性。 | |
| 檢查節點磁盤壓力 | 檢查節點磁盤使用率是否過高。 | 請檢查節點磁盤使用情況,及時清理磁盤中不需要的文件或擴容磁盤。 | |
| 檢查節點PID壓力 | 檢查節點PID使用率是否過高。 | 請檢查節點PID使用情況。 | |
| 檢查節點Chronyd進程狀態是否正常 | 檢查節點Chronyd進程是否異常,該進程異常可能會影響系統時鐘同步。 | 節點Chronyd進程異常,可能影響節點系統時間同步。請嘗試通過命令systemctl restart chronyd重啟節點Chronyd進程。 | |
| 檢查節點Ntpd進程狀態是否正常 | 檢查節點Ntpd進程是否異常,該進程異常時可能會影響系統時鐘同步。 | 節點Ntpd進程異常,可能影響節點系統時間同步。請嘗試通過命令systemctl restart ntpd重啟節點Ntpd進程。 | |
| 檢查節點Containerd狀態是否正常 | 檢查節點Containerd服務的狀態,該進程異常時可能會影響Pod的正常運行。 | 節點Containerd狀態異常,請收集節點日志并提交工單處理。 | |
| 檢查節點Containerd鏡像拉取是否正常 | 檢查節點Containerd進程拉取pause鏡像是否正常。 | 請檢查節點網絡及鏡像配置。 | |
| 檢查節點Docker狀態是否正常 | 檢查節點Dockerd服務的狀態,該進程異常時可能會影響Pod的正常運行。 | 節點Docker狀態異常,請收集節點日志并提交工單處理。 | |
| 檢查節點Docker鏡像拉取是否正常 | 檢查節點Docker進程拉取pause鏡像是否正常。 | 請檢查節點網絡及鏡像配置。 | |
| 檢查節點Kubelet狀態是否正常 | 檢查節點Kubelet服務的狀態,該進程可能會影響Pod的正常運行。 | 請檢查節點kubelet日志。 | |
| 檢查節點Kubelet啟動時間 | 檢查節點Kubelet進程啟動時間。 | 無 | |
| 節點OS版本 | 檢查節點操作系統版本。 | 無 | |
| 節點內核版本 | 檢查節點內核版本是否過低,內核版本過低可能造成系統異常。 | 請嘗試更換節點升級內核。 | |
| 節點Systemd版本 | 檢查節點systemd版本。 | 無 | |
| 節點runc版本 | 檢查節點runc版本,runc版本過低可能造成系統異常。 | 無 | |
| 節點系統時間 | 檢查節點系統時間。 | 無 | |
| 節點硬件時間 | 檢查節點硬件時間。 | 無 | |
| 節點硬件時間漂移 | 檢查節點硬件時鐘與系統時間是否一致,時間相差超過2分鐘可能引起組件異常。 | 請嘗試登錄節點,通過命令hwclock --systohc將節點系統時間同步到硬件時間。 | |
| 檢查節點內存交換區開啟情況 | 檢查節點內存交換區 (Memory Swap) 功能是否開啟,K8s默認要求關閉內存交換區。 | 當前節點內存交換區 (Memory Swap) 功能不支持開啟,請登錄節點關閉該功能。 | |
| 檢查Conntrack表使用情況 | 檢查節點Conntrack表是否滿,Conntrack表滿可能影響網絡性能。 | 請檢查nf_conntrack_buckets和nf_conntrack_max內核參數。 | |
| 檢查節點訪問集群API Server是否正常 | 檢查節點能否正常連接集群API Server,訪問集群中其他K8s資源。 | 請檢查集群相關配置。請檢查集群相關配置。檢查Master組件Pod是否異常。API Server使用的負載均衡ELB是否異常。 | |
| 節點DNS服務地址 | 檢查節點能否正常使用主機DNS服務,通過主機DNS服務解析集群外域名。 | 請檢查主機DNS服務是否正常。更多信息,請參見DNS解析異常問題排查。 | |
| 檢查節點內網IP是否存在 | 檢查節點內網IP是否存在。 | 節點內網IP不存在,請嘗試移除節點后重新導入。 | |
| 檢查節點能否訪問公網 | 檢查節點能否正常訪問公網,無法訪問公網可能影響公網鏡像拉取。 | 請檢查集群是否開啟SNAT公網訪問。 | |
| 節點CPU使用率 | 檢查節點CPU負載是否過高,CPU負載過高可能影響系統性能。 | 無 | |
| 節點內存使用率 | 檢查節點內存負載是否過高,內存過高可能影響系統性能。 | 無 | |
| Pod | 檢查Pod是否存在 | 檢查集群中是否存在該Pod。 | 請檢查Pod在集群中對應命名空間下是否存在。 |
| 檢查Pod狀態是否為Running | 檢查Pod是否處于Running狀態。 | 請檢查Pod狀態及日志。更多信息,請參見Pod異常問題排查。 | |
| Pod容器重啟次數統計 | 統計Pod中容器重啟次數。 | 請檢查Pod狀態及日志。更多信息,請參見Pod異常問題排查。 | |
| 檢查Pod容器是否存在鏡像下載阻塞情況 | 檢查Pod容器對應的鏡像下載被阻塞。 | 請檢查Pod狀態及日志。更多信息,請參見Pod異常問題排查。 | |
| 檢查Pod容器鏡像Secrets是否有效 | 檢查Pod拉取鏡像的Secrets是否有效。 | 請檢查Pod狀態及日志。更多信息,請參見Pod異常問題排查。 | |
| 檢查Pod到主機網絡DNS服務器的連通性 | 檢查Pod到主機網絡DNS服務器的連通性。 | 請檢查Pod到主機網絡DNS服務器的連通性。 | |
| 檢查Pod容器進程處于D狀態檢查 | 檢查Pod內的容器進程是否處于D狀態。 | Pod的部分容器進程處于D狀態,通常為容器進程卡在磁盤IO中,請嘗試重啟宿主機ECS,如仍無法恢復,請提交工單處理。 | |
| 檢查Pod是否初始化成功 | 檢查Pod是否正常初始化。 | 請檢查Pod狀態及日志。更多信息,請參見Pod異常問題排查。 | |
| 檢查Pod是否處于調度中狀態 | 檢查Pod是否正常調度。 | 請檢查Pod狀態及日志。更多信息,請參見Pod異常問題排查。 | |
| 檢查Pod是否配置了livenessProbe探針 | 檢查Pod描述文件是否配置了livenessProbe探針。 | 請為Pod配置合適的livenessProbe健康檢查。 | |
| 檢查Pod是否配置了ReadinessProbe探針 | 檢查Pod描述文件是否配置了ReadinessProbe探針。 | 請為Pod配置合適的readinessProbe健康檢查。 | |
| 檢查Pod是否配置了資源requests | 檢查Pod描述文件是否配置了資源requests。 | 請為Pod配置合適的request資源申請。 | |
| 檢查Pod是否配置了資源limits | 檢查Pod描述文件否配置了資源limits。 | 請為Pod配置合適的limit資源限制。 | |
| 檢查Pod在過去24小時內是否存在OOM Kill情況 | 檢查Pod在過去24小時內是否存在因內存過載而被Kill的情況。 | 請檢查Pod是否配置了合適的limit資源限制,同時檢查Pod狀態及日志。更多信息,請參見Pod異常問題排查。 | |
| Ingress | 檢查Ingress是否存在 | 檢查與轉發規則匹配的Ingress是否存在。 | 檢查所提供的URL信息是否有能夠對應的Ingress規則。若URL信息無誤,可能是Ingress規則存在問題。 |
| 檢查Ingress名稱規范 | 檢查所匹配到的Ingress名稱是否規范。 | 無 | |
| 檢查是否使用了nginx.ingress.kubernetes.io/session-cookie-hash廢棄注解 | 檢查是否使用了在0.24.0版本廢棄的nginx.ingress.kubernetes.io/session-cookie-hash注解key。 | 確認當前Ingress Controller版本,移除該注解或使用其他注解代替。 | |
| 檢查是否使用了nginx.ingress.kubernetes.io/base-url-scheme廢棄注解 | 檢查是否使用了在0.22.0版本廢棄的nginx.ingress.kubernetes.io/base-url-scheme注解key。 | 確認當前Ingress Controller版本,移除該注解或使用其他注解代替。 | |
| 檢查是否使用了nginx.ingress.kubernetes.io/secure-backends廢棄注解 | 檢查是否使用了在0.21.0版本廢棄的nginx.ingress.kubernetes.io/secure-backends注解key。 | 確認當前Ingress Controller版本,移除該注解或使用其他注解代替。 | |
| 檢查是否使用了nginx.com/nginx.org注解 | 檢查是否使用了不兼容社區版Nginx Ingress Controller的商業版Ingress注解key(以nginx.com/nginx.org開頭)。 | 請使用對應功能的正確用法。關于Ingress更多信息,請參見社區官方文檔。(引用到官方文檔) | |
| 檢查是否使用了nginx.ingress.kubernetes.io/grpc-backend廢棄注解 | 檢查是否使用了在0.21.0版本廢棄的nginx.ingress.kubernetes.io/grpc-backend注解key。 | 確認當前Ingress Controller版本,移除該注解或使用其他注解代替。 | |
| 檢查是否使用了nginx.ingress.kubernetes.io/mirror-uri廢棄注解 | 檢查是否使用了在0.24.0版本廢棄的nginx.ingress.kubernetes.io/mirror-uri注解key。 | 確認當前Ingress Controller版本,移除該注解或使用其他注解代替。 | |
| 檢查是否啟用了canary | 使用了nginx.ingress.kubernetes.io/canary相關注解,但value值為"false‘,如果需要使用灰度功能,請指定nginx.ingress.kubernetes.io/canary: "true"。 | 如果您需要在該Ingress上開啟Canary功能,請在Ingress規則上添加nginx.ingress.kubernetes.io/canary: "true"注解。 | |
| 檢查Ingress是否存在異常事件 | 檢查集群中是否存在與該Ingress相關的異常事件。 | 檢查并處理異常事件描述信息中的報錯,如無法解決,請提交工單處理。 |