共用方式為


使用 PSI 計量對 AKS 叢集中的 CPU 壓力進行疑難解答

CPU 壓力比傳統 CPU 使用率計量更精確的資源爭用指標。 雖然高 CPU 使用量會顯示資源耗用量,但不一定表示效能問題。 在 Azure Kubernetes Service (AKS) 叢集中,透過壓力停滯資訊 (PSI) 計量瞭解 CPU 壓力有助於識別真正的資源爭用問題。

當 AKS 叢集中的節點遇到 CPU 壓力時,即使 CPU 使用率看起來適中,應用程式也可能遭受效能不佳。 PSI 計量可藉由測量工作延遲,而不只是資源耗用量,來提供實際資源爭用的見解。

本文可協助您使用 PSI 計量監視 CPU 壓力,並提供解決資源爭用問題的最佳做法。

癥狀

下表概述 CPU 壓力的常見徵兆:

癥狀 說明
增加應用程式延遲 即使 CPU 使用率看起來適中,服務回應速度也會變慢。
節流容器 容器在處理時遇到延遲,儘管節點上有可用的CPU資源。
效能降低 應用程式遇到無法預測的效能變化,這些變化不會與CPU使用量百分比相互關聯。

疑難排解檢查清單

若要找出並解決 CPU 壓力問題,請遵循下列步驟:

步驟 1:啟用和監視 PSI 計量

使用下列其中一種方法來存取 PSI 計量:

  • 在網頁瀏覽器中,使用 Azure Monitoring Managed Prometheus 或其他監視解決方案來查詢 PSI 計量。
  • 在控制台中,使用 Kubernetes 命令行工具 (kubectl)。

Azure 監視管理的 Prometheus 提供監視 PSI 指標的方式:

  1. 遵循 啟用 Prometheus 和 Grafana 中的指示,為您的 AKS 叢集啟用 Azure 監視受控 Prometheus。

    若要為 Prometheus 啟用自定義的抓取度量,請參閱 Scrape 設定。 我們建議將 minumum ingestion profile 設定為 false,並將 node-exporter 設定為 true

  2. 從 Azure 入口網站流覽至與 AKS 叢集相關聯的 Azure 監視器工作區。

    顯示如何流覽至 Azure 監視器工作區的螢幕快照。

  3. 在 [監視] 下,選取 [計量]。

  4. 選取 [Prometheus 計量 ] 作為數據源。

    備註

    若要使用指標,您必須在 Azure 監視受控 Prometheus 中加以啟用。 這些計量是由 Node 導出工具或 cAdvisor 公開。

  5. 在 Prometheus 瀏覽器中查詢特定的 PSI 指標:

    • 針對節點層級 CPU 壓力,請使用 node_pressure_cpu_waiting_seconds_total Prometheus 查詢語言(PromQL)。

      顯示如何查詢節點層級 CPU 壓力的螢幕快照。

    • 針對 Pod 等級的 CPU 壓力,請使用 container_cpu_cfs_throttled_seconds_total PromQL。

  6. 計算 PSI-some 百分比(至少一個任務在 CPU 上停滯的時間百分比):

    rate(node_pressure_cpu_waiting_seconds_total[5m]) * 100

備註

某些容器層級計量,例如 container_pressure_cpu_waiting_seconds_total ,且 container_pressure_cpu_stalled_seconds_total 無法在AKS中使用,因為它們是處於Alpha狀態的 Kubelet PSI 功能閘道的一部分。 AKS 開始支援在功能到達 Beta 階段時使用此功能。

步驟 2:檢閱最佳做法以防止 CPU 壓力

請檢閱下表,瞭解如何實作避免 CPU 壓力的最佳做法:

最佳做法 說明
專注於 PSI 計量而非使用率 使用 PSI 計量作為資源爭用的主要指標,而不是 CPU 使用率百分比。 如需詳細資訊,請參閱 PSI - 壓力停滯資訊
識別使用最多 CPU 的 Pod 隔離使用最多 CPU 的 Pod,並找出降低壓力的解決方案。 如需詳細資訊,請參閱 針對 AKS 叢集中的高 CPU 使用量進行疑難解答
將 CPU 限制降到最低 請考慮移除 CPU 限制,並根據要求依賴 Linux 的完全公平排程器 與 CPU 共用。 如需詳細資訊,請參閱 Pod和容器的資源管理
使用適當的服務品質 (QoS) 類別 根據每個 Pod 的重要性和爭用敏感度,設定正確的 QoS 類別。 如需詳細資訊,請參閱 設定Pod的服務品質
優化 Pod 放置 使用 Pod 反親和性規則,以避免將 CPU 密集型工作負載放在相同的節點上。 如需詳細資訊,請參閱 將 Pod 指派給節點
監視短暫的壓力尖峰 短暫的壓力尖峰可能表明即使平均使用率看似可接受,也可能存在問題。 如需詳細資訊,請參閱 資源計量管線

要監視的重要 PSI 計量

備註

如果節點的 CPU 使用量適中,但節點上的容器遇到 CFS 節流、增加資源限制,或移除這些限制,並遵循 Linux 的完全公平排程器 (CFS) 演算法。

節點層級 PSI 計量

  • node_pressure_cpu_waiting_seconds_total:累計時間任務等候CPU。
  • node_cpu_seconds_total:用於比較的傳統 CPU 利用率。

容器層級 PSI 指標

  • container_cpu_cfs_throttled_periods_total:容器被節流的次數。
  • container_cpu_cfs_throttled_seconds_total:容器節流的總時間。
  • 節流百分比: rate(container_cpu_cfs_throttled_periods_total[5m]) / rate(container_cpu_cfs_periods_total[5m]) * 100

為什麼要使用 PSI 計量?

AKS 會使用 PSI 計量作為 CPU 壓力的指標,而不是基於數個原因的負載平均值:

  • 在超大和多核心節點中,負載平均通常低於報告 CPU 飽和度。
  • 在聊天和容器化節點上,負載平均可能會過度發出訊號,導致警示疲勞。
  • 由於負載平均沒有每個 c 群組可見度,因此嘈雜的 Pod 可以隱藏在低系統平均值後面。

參考資料

與我們連絡,以取得說明

如果您有疑問,可以詢問 Azure 社群支援。 您也可以向 Azure 意見反應社群提交產品意見反應。