全部產品
Search
文件中心

Container Service for Kubernetes:Pod診斷

更新時間:Jun 19, 2024

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常見問題,檢查項包括Pod狀態、鏡像拉取、網路連通性等。

ClusterComponent

檢查叢集常見問題,檢查項包括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是否可用。

請嘗試通過命令kubectl get apiservice,檢查叢集中的APIService的可用狀態,並通過kubectl describe 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