共用方式為


針對 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,請遵循下列步驟:

  1. Azure 入口網站 瀏覽至叢集。

  2. 在 [監視] 下,選取 [深入解析]

    [深入解析] 底下的 [監視] 螢幕快照

  3. 設定適當的 時間範圍

    時間範圍為 6 小時的螢幕快照。

  4. 找出 CPU 使用率較高的節點,並檢查節點 CPU 使用量是否穩定。

    選取 [節點]。 將 [計量] 設定[CPU 使用量] (millicores),然後將範例設定為 [最大值]。 使用 Max 上的排序功能,依 Max% 排序節點 CPU 使用量最高的節點會出現在頂端。

    在下列螢幕快照中,節點只會使用最大CPU的12%,且已執行16天。

    [監視] 選取範圍下 [節點] 的螢幕快照。

  5. 找到 CPU 使用率較高的節點之後,請選取節點來尋找其上的 Pod 及其 CPU 使用量。

    [監視] 選取範圍下 Pod 的深入解析選項螢幕快照。

    注意

    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 意見反應社群提交產品意見反應。