針對 AKS 叢集中的高 CPU 使用率進行疑難排解
高 CPU 使用量是一或多個應用程式或進程的癥狀,需要如此多的 CPU 時間,電腦效能或可用性受到影響。 高 CPU 使用量可以透過許多方式發生,但主要是由使用者設定所造成。
當 Azure Kubernetes Service (AKS) 叢集中的節點遇到高 CPU 使用量時,其上執行的應用程式可能會降低效能和可靠性。 應用程式或流程也會變得不穩定,這可能會導致回應速度緩慢以外的問題。
本文可協助您識別耗用高CPU的節點和容器,並提供解決高CPU使用量的最佳做法。
徵兆
下表概述高 CPU 使用量的常見徵兆:
徵兆 | 描述 |
---|---|
CPU 饑餓 | CPU 密集型應用程式會讓相同節點上的其他應用程式變慢。 |
狀態變更緩慢 | Pod 可能需要較長的時間才能準備好。 |
NotReady 節點狀態 | 節點進入 NotReady 狀態。 發生此問題的原因是高 CPU 使用量的容器會導致 Kubectl 命令行工具沒有回應。 |
疑難排解檢查清單
若要解決高 CPU 使用量,請使用有效的監視工具並套用最佳做法。
步驟 1:識別具有高 CPU 使用量的節點/容器
使用下列其中一種方法來識別具有高 CPU 使用量的節點和容器:
在網頁瀏覽器中,使用 Azure 入口網站 中 AKS 的 Container Insights 功能。
在控制台中,使用 Kubernetes 命令行工具 (kubectl)。
Container Insights 是 AKS 中的一項功能。 其設計目的是監視容器工作負載的效能。 您可以使用容器深入解析來識別驅動高 CPU 使用量的節點、容器或 Pod。
若要識別驅動高 CPU 使用量的節點、容器或 Pod,請遵循下列步驟:
從 Azure 入口網站 瀏覽至叢集。
在 [監視] 下,選取 [深入解析]。
設定適當的 時間範圍。
找出 CPU 使用率較高的節點,並檢查節點 CPU 使用量是否穩定。
選取 [節點]。 將 [計量] 設定為 [CPU 使用量] (millicores),然後將範例設定為 [最大值]。 使用 Max 上的排序功能,依 Max% 排序節點。 CPU 使用量最高的節點會出現在頂端。
在下列螢幕快照中,節點只會使用最大CPU的12%,且已執行16天。
找到 CPU 使用率較高的節點之後,請選取節點來尋找其上的 Pod 及其 CPU 使用量。
注意
Pod 的 CPU 或記憶體使用量百分比是以針對容器指定的 CPU 要求為基礎。 它不代表節點的CPU或記憶體使用量百分比。 因此,請查看實際的CPU或記憶體使用量,而不是Pod的CPU或記憶體使用量百分比。
取得高 CPU 使用量的 Pod 清單之後,您可以將它對應至導致 CPU 使用量尖峰的應用程式。
步驟 2:檢閱避免高 CPU 使用量的最佳做法
請檢閱下表,瞭解如何實作避免高 CPU 使用量的最佳做法:
最佳做法 | 描述 |
---|---|
為容器設定適當限制 | Kubernetes 允許針對容器資源指定要求和限制。 資源要求和限制代表容器可使用的資源數目下限和上限。 建議您設定適當的要求和限制,為每個 Pod 選擇適當的 Kubernetes 服務品質 (QoS) 類別。 |
啟用水平 Pod 自動調整程式 (HPA) | 設定適當的限制並啟用 HPA,有助於解決高 CPU 使用率。 |
選取較高的 SKU VM | 若要處理高 CPU 工作負載,請使用較高的 SKU VM。 若要這樣做,則須建立新的節點集區、封鎖節點使其無法排程,並清空現有節點集區。 |
隔離系統和使用者工作負載 | 建議您建立個別節點集區 (而非代理程式集區) 來執行工作負載。 如此便能防止系統節點集區多載,並提供更佳效能。 |
參考資料
與我們連絡,以取得說明
如果您有問題或需要相關協助,請建立支援要求,或詢問 Azure community 支援。 您也可以向 Azure 意見反應社群提交產品意見反應。