Container Service平台提供Pod診斷功能,協助您診斷異常的Pod資訊。本文介紹Pod診斷的檢查項以及對應的修複方案。
Container Service平台構建了基於專家經驗的故障診斷系統,並基于海量資料訓練了AI智能故障診斷模型。Pod診斷融合了基於專家經驗和AI智能診斷兩種診斷模式,進一步深入定位問題根因。Pod診斷套件括診斷檢查項和診斷根因。
診斷檢查項:包括Pod檢查、ClusterComponent檢查。
診斷根因:包括定位到的根因以及修複建議。Pod診斷會收集部分叢集資訊並識別其中的異常,然後根據識別到的異常進行深入的異常診斷。
使用故障診斷功能時,系統將在您的叢集執行資料擷取程式並收集檢查結果。採集的資訊包括系統版本,以及負載、Docker、Kubelet等運行狀態及系統日誌中嚴重錯誤資訊。資料擷取程式不會採集您的商務資訊及敏感性資料。
診斷支援的異常情境
Pod診斷覆蓋的典型異常情境和AI智能診斷支援情境如下表所示。
類別 | 支援的異常情境 |
Pod診斷 | Pod未被調度器處理。 |
Pod不滿足調度約束無法被調度。 | |
Pod已調度但未被Kubelet處理。 | |
Pod等待儲存卷就緒。 | |
Pod被驅逐。 | |
Pod的Sandbox容器建立失敗。 | |
Pod長期處於terminating狀態。 | |
Pod中容器發生OOM異常。 | |
Pod中容器異常退出。 | |
Pod中容器處於CrashLoopBackOff狀態。 | |
Pod中容器NotReady。 | |
Pod拉取鏡像出錯。 | |
Pod拉取鏡像逾時。 | |
AI智能診斷 | Pod狀態異常。 |
Pod發生OOM異常。 | |
Pod容器異常退出。 | |
Pod ConfigMap或Secret配置異常。 | |
Pod健全狀態檢查失敗。 | |
Pod PVC配置異常。 | |
Pod鏡像拉取異常。 |
診斷流程
叢集診斷收集部分叢集資訊並識別其中的異常,然後根據識別到的異常進行深入的異常診斷。診斷融合了基於專家經驗和AI智能診斷兩種診斷模式,進一步深入定位問題根因。發起診斷後,診斷會按照異常識別、資料擷取、檢查項評估以及根因分析四個階段,完成後給出診斷結果。
異常識別:採集基本資料,例如Pod狀態、叢集Event事件流等,並快速分析當前的異常。
資料擷取:根據異常識別結果採集和診斷上下文相關的資料。
檢查項評估:根據採集到的資料,判斷關鍵計量是否正常。
根因分析:根據採集的資料和檢查項,部分問題可自動分析導致問題的原因。
診斷結果
診斷結果包括根因結果與檢查項。根因診斷結果部分包括識別到的異常、異常根因和修複建議。檢查項則按不同的類別對可能引起異常的點進行檢查,覆蓋根因未包括的部分,並對異常原因進一步補充。
根據叢集配置,具體檢查項可能稍有不同。實際結果請以診斷頁面結果為準。
Pod診斷對應的檢查項
診斷項分組 | 說明 |
檢查Pod常見問題,檢查項包括Pod狀態、鏡像拉取、網路連通性等。 | |
檢查叢集常見問題,檢查項包括API Service可用性、DNS可用性、NAT Gateway狀態等。 |
Pod
檢查項名稱 | 檢查項說明 | 修複方案 |
Pod容器重啟次數統計 | 統計Pod中容器重啟次數。 | 請檢查Pod狀態及日誌。更多資訊,請參見Pod異常問題排查。 |
Pod容器鏡像下載阻塞情況 | 檢查Pod同節點是否有其他Pod的容器鏡像下載被阻塞。 | 請檢查Pod狀態及日誌。更多資訊,請參見Pod異常問題排查。 |
Pod容器鏡像Secrets有效性檢查 | 檢查Pod拉取鏡像的Secrets是否有效。 | 請檢查Pod狀態及日誌。更多資訊,請參見Pod異常問題排查。 |
GPU Pod的環境變數是否合法 | 檢查NVIDIA_VISIBLE_DEVICES是否位於Pod環境變數中,因為此變數可能與Kubelet衝突。 | 請檢查Pod狀態及日誌。更多資訊,請參見Pod異常問題排查。 |
Pod到CoreDNS Pods的連通性 | 檢查Pod到CoreDNS Pods連通性。 | 檢查Pod到CoreDNS Pods的連通性。 |
Pod到CoreDNS Service的連通性 | 檢查Pod到CoreDNS Service連通性。 | 檢查Pod到CoreDNS Pods的連通性。 |
Pod到主機網路DNS伺服器的連通性 | 檢查Pod到主機網路DNS伺服器的連通性。 | 檢查Pod到主機網路DNS伺服器的連通性。 |
Pod容器進程處於D狀態檢查 | 檢查Pod的容器進程是否處於D狀態。 | Pod的部分容器進程處於D狀態,通常為容器進程卡在磁碟IO中,請嘗試重啟宿主機ECS,如仍無法恢複,請提交工單處理。 |
Pod初始化狀態 | 檢查Pod是否正常初始化。 | 請檢查Pod狀態及日誌。更多資訊,請參見Pod異常問題排查。 |
Pod申請的GPU資源 | 檢查Pod是否申請GPU資源,排除因為未申請GPU資源導致的Pod無法使用GPU。 | 該Pod中沒有聲明GPU資源,如有需要,請檢查Pod配置是否規範。 |
Pod調度狀態 | 檢查Pod是否正常調度。 | 該Pod中沒有聲明GPU資源,如有需要,請檢查Pod配置是否規範。 |
ClusterComponent
檢查項名稱 | 檢查項說明 | 修複方案 |
叢集免密外掛程式版本檢查 | 檢查叢集免密外掛程式版本是否過低。 | 叢集免密外掛程式版本檢查過低,請儘快升級版本。具體操作,請參見使用免密組件拉取容器鏡像。 |
叢集APIService可用狀態 | 檢查叢集APIService是否可用。 | 請嘗試通過命令 |
叢集Pod網段餘量緊張 | 檢查Flannel叢集剩餘可用PodCIDR網段是否少於5個。每個節點消耗一個PodCIDR網段,Pod網段耗盡後,新添加的節點將無法正常工作。 | 請提交工單處理。 |
DNS 服務後端服務端點 | 檢查叢集DNS服務Endpoints數。 | 請檢查CoreDNS Pod運行狀態和作業記錄。更多資訊,請參見DNS解析異常問題排查。 |
DNS 服務 ClusterIP | 檢查叢集DNS服務的Cluster IP是否正常分配,叢集DNS服務異常會造成叢集功能異常,影響業務。 | 請檢查CoreDNS Pod運行狀態和作業記錄。更多資訊,請參見DNS解析異常問題排查。 |
叢集NAT Gateway狀態 | 檢查叢集NAT Gateway狀態。 | 請登入NAT Gateway管理主控台,檢查叢集的NAT Gateway是否因欠費而處於欠費鎖定狀態。 |
叢集NAT Gateway並發超規格丟棄速率 | 檢查NAT Gateway會話並發超規格丟棄速率是否過高。 | 叢集NAT Gateway會話並發超規格丟棄速率過高,請嘗試通過升級NAT Gateway的規格解決該問題。更多資訊,請參見普通型公網NAT Gateway升級至增強型公網NAT GatewayFAQ。 |