Kubernetes v1.34: 面向 Kubernetes 的 PSI 指標進階至 Beta

隨著 Kubernetes 叢集的規模和複雜性不斷增長,瞭解單個節點的健康狀況和效能變得越來越重要。我們很高興地宣佈,自 Kubernetes v1.34 起,壓力失速資訊(Pressure Stall Information,PSI)指標已晉升為 Beta 版。

什麼是壓力失速資訊(PSI)?

壓力失速資訊(PSI)是 Linux 核心(4.20 及更高版本)的一項功能,它提供了一種規範化的方法來量化基礎設施資源的壓力,即判斷對某一資源的需求是否超過了當前的供應。它超越了簡單的資源利用率指標,轉而衡量任務因資源爭用而停滯的時間。這是一種識別和診斷可能影響應用程式效能的資源瓶頸的強大方法。

PSI 為 CPU、記憶體和 I/O 暴露了指標,分為 some(部分)或 full(完全)壓力。

some(部分)
至少一個任務因資源而停滯的時間百分比。這表明存在一定程度的資源爭用。
full(完全)
所有非空閒任務同時因某資源而停滯的時間百分比。這表明存在更嚴重的資源瓶頸。
Diagram illustrating the difference between 'some' and 'full' PSI pressure.

PSI:“部分”壓力與“完全”壓力

這些指標在 10 秒、1 分鐘和 5 分鐘的滾動視窗內進行聚合,提供了資源壓力隨時間變化的全面檢視。

Kubernetes 中的 PSI 指標

啟用 KubeletPSI 特性門控後,kubelet 現在可以從 Linux 核心收集 PSI 指標,並透過兩個渠道將其暴露出來:Summary API/metrics/cadvisor Prometheus 端點。這使你能夠在節點、Pod 和容器級別監控和告警資源壓力。

透過 /metrics/cadvisor 可以獲取以下新的 Prometheus 暴露格式的指標:

  • container_pressure_cpu_stalled_seconds_total
  • container_pressure_cpu_waiting_seconds_total
  • container_pressure_memory_stalled_seconds_total
  • container_pressure_memory_waiting_seconds_total
  • container_pressure_io_stalled_seconds_total
  • container_pressure_io_waiting_seconds_total

這些指標,連同來自 Summary API 的資料,提供了資源壓力的細粒度檢視,使你能夠精確定位效能問題的根源並採取糾正措施。例如,你可以使用這些指標來:

  • 識別記憶體洩漏: 記憶體的 some 壓力持續增加可能表明應用程式存在記憶體洩漏。
  • 最佳化資源請求和限制: 通過了解工作負載的資源壓力,你可以更準確地調整其資源請求和限制。
  • 自動擴縮工作負載: 你可以使用 PSI 指標來觸發自動擴縮事件,確保你的工作負載擁有實現最佳效能所需的資源。

如何啟用 PSI 指標

要在你的 Kubernetes 叢集中啟用 PSI 指標,你需要:

  1. 確保你的節點執行 Linux 核心版本 4.20 或更高版本,並使用 cgroup v2。
  2. 在 kubelet 上啟用 KubeletPSI 特性門控。

啟用後,你可以開始使用與 Prometheus 相容的監控解決方案抓取 /metrics/cadvisor 端點,或查詢 Summary API 來收集和視覺化新的 PSI 指標。請注意,PSI 是一個 Linux 核心特性,因此這些指標在 Windows 節點上不可用。你的叢集可以包含 Linux 和 Windows 節點的混合,在 Windows 節點上,kubelet 不會暴露 PSI 指標。

接下來是什麼?

我們很高興能將 PSI 指標帶給 Kubernetes 社群,並期待你的反饋。作為一個 Beta 特性,我們正在積極努力改進和擴充套件此功能,以期釋出穩定的 GA 版本。我們鼓勵你試用並與我們分享你的體驗。

要了解有關 PSI 指標的更多資訊,請檢視官方的 Kubernetes 文件。你也可以在 #sig-node Slack 頻道上參與討論。