隨著叢集規模擴大和頻繁自動調整彈性,僅憑人工手動方式很難快速定位及發現問題,也很難追溯歷史,基本不可能發現在長時間軸上統計才能發現的異常。本文介紹如何通過節點彈性大盤上展示的Pod、Node詳情及變化圖表,快速排查定位問題。
前提條件
若您需要使用節點彈性大盤功能,請
提交工單申請。Kubernetes叢集已開啟事件中心。詳細資料,請參見事件監控。
Kubernetes叢集已開啟審計日誌。詳細資料,請參見使用叢集API Server審計功能。
節點彈性大盤詳情
節點彈性大盤目前分為4個部分,下面詳細介紹大盤每個組成部分的展示資料及圖表的含義。
總覽錶盤
總覽部分由5組資料群組成,也是彈性營運最關心的5組資料。
總節點數: 叢集中所有節點的數目,反映叢集容量水位。
可用節點數:叢集中KubeletReady的節點數目,如果與總節點數不一致則說明有些節點處於KubeletNotReady狀態,如果這些節點並非正在加入,那有可能是故障,需要特別關注。
叢集可擴容:叢集是否處於可擴容的狀態,如果這裡顯示NO,表示叢集中未達
Ready
狀態的節點數目大於設定的上限,則一切擴容活動都不會進行。最近擴容活動:在所選擇的時間範圍內的叢集發生節點擴容活動總數。
最近縮容活動:在所選擇的時間範圍內的叢集發生節點縮容活動總數。
Pod詳情
Pod詳情由兩種圖表構成:
不可調度Pod趨勢圖:展示的是叢集中狀態為
Pending
的Pod總數在時間維度的曲線圖,不可調度Pod往往可以反映一個叢集中的擴容壓力。驅逐Pod趨勢圖:展示的是叢集中發生
eviction
的Pod總數在時間維度的曲線。驅逐Pod的出現,說明對應Node上的資源使用水位已經下降到閾值之下。
節點詳情
節點狀態趨勢圖:展示了總節點數、KubeletReady節點數和KubeletNotReady節點數。其中KubeletNotReady節點數是排除了當前時刻距離creationTimeStamp 10分鐘內的新加入節點的。
節點彈性擴容趨勢圖和節點彈性縮容趨勢圖:這兩個圖展示了節點擴容事件和縮容事件在時間維度下的圖表。擴容事件是每次cluster-autoscaler觸發彈性時會產生的ScaledUpGroup,資料是總數。縮容事件是採集每次縮容時cluster-autoscaler的ScaleDown events。
彈性活動列表
彈性活動列表是擴縮相關的Event的表,主要是給使用者提供關於擴、縮活動的搜尋功能,方便問題定位。
節點彈性大盤使用方法
發現問題
是否存在異常節點:總節點數是否等於可用節點數,如果不等則說明可能有節點異常。
叢集容量規劃是否合理:大多數的線上業務都存在業務高峰和低峰,在叢集中使用自動調整的最重要目的之一就是讓自動調整協助叢集容量曲線盡量貼合業務壓力曲線。您可以根據需要選定時間範圍,然後通過上文節點詳情中的資料,與業務壓力做比較,看看波峰波穀的差異是否符合預期並找出最佳化點。
問題排查
存在狀態為
pending
的Pod,但是沒有節點彈出。則根據上文叢集可擴容的資料,判斷叢集是否可以擴容。如果這項資料顯示不可擴容,則cluster-autoscaler不會執行任何擴容活動,排查結束,需要解決叢集健康問題。
如果叢集可擴容,則通過上文彈性活動列表搜尋Pod Name和NotTriggerScaleUp事件,通過
reason
欄位查看具體沒有觸發擴容的原因。
定位Pod觸發擴容的時間:通過上文彈性活動列表搜尋Pod Name和TriggeredScaleUp事件,查看具體觸發擴容的時間。
擴容失敗原因:通過上文彈性活動列表搜尋FailedToScaleUpGroup事件,查看
reason
可定位到cluster-autoscaler觸發的擴容活動失敗的具體原因。節點縮容時間點:通過上文彈性活動列表搜尋Node Name和ScaleDown事件,查看具體觸發縮容的時間。
節點縮容失敗原因:通過上文彈性活動列表搜尋Node Name和ScaleDownFailed事件,查看具體觸發縮容的原因。