針對 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. 設定適當的 時間範圍

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

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

    選取 [節點]。 將 [計量 ] 設定為 [CPU 使用量 (毫核心) ,然後將範例設定為 [最大值]。 使用 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 意應見反社群