這篇文章已超過一年。較舊的文章可能包含過時的內容。請檢查頁面中的資訊自發布以來是否已變得不正確。

Kubernetes v1.26:CPUManager 正式發布 (GA)

CPU 管理器是 kubelet (Kubernetes 節點代理程式) 的一部分,使用者可以使用它將獨佔 CPU 分配給容器。自 Kubernetes v1.10 (它在其中升級到 Beta 版) 以來,CPU 管理器證明了自身的可靠性,並履行了將獨佔 CPU 分配給容器的角色,因此採用率穩步增長,使其成為效能關鍵和低延遲設定的主要組件。隨著時間的推移,大多數變更都是關於錯誤修復或內部重構,以下是值得注意的使用者可見變更

CPU 管理器已達到「只需工作」的地步,因此在 Kubernetes v1.26 中,它已升級為正式發布 (GA)。

CPU 管理器的自訂選項

CPU 管理器支援兩種操作模式,使用其策略進行配置。使用 none 策略,CPU 管理器會將 CPU 分配給容器,而沒有任何特定約束,除了 Pod 規範中設定的 (可選) 配額。使用 static 策略,如果 pod 屬於 Guaranteed QoS 類別,並且該 Pod 中的每個容器都請求整數量的 vCPU 核心,則 CPU 管理器會獨佔分配 CPU。獨佔分配表示其他容器 (無論是來自同一個 Pod,還是來自不同的 Pod) 都不會排程到該 CPU 上。

這種簡單的操作模型為使用者群提供了相當好的服務,但隨著 CPU 管理器越來越成熟,使用者開始關注更精細的使用案例,以及如何更好地支援它們。

社群意識到,與其新增更多策略,幾乎所有新穎的使用案例都是 static CPU 管理器策略啟用的行為的某種變體。因此,決定新增選項來調整靜態策略的行為。與任何其他 Kubernetes 功能一樣,這些選項具有不同的成熟度,為了被接受,每個新選項在禁用時都提供向後相容的行為,並記錄如何相互交互 (如果它們確實交互)。

這使 Kubernetes 專案能夠將 CPU 管理器核心組件和核心 CPU 分配演算法升級到 GA,同時也使該領域的新實驗時代成為可能。在 Kubernetes v1.26 中,CPU 管理器支援三種不同的策略選項

full-pcpus-only
將 CPU 管理器核心分配演算法限制為僅限完整物理核心,從允許共享核心的硬體技術中減少雜訊鄰居問題。
distribute-cpus-across-numa
驅動 CPU 管理器在 NUMA 節點之間均勻分配 CPU,以滿足需要多個 NUMA 節點才能滿足分配的情況。
align-by-socket
變更 CPU 管理器將 CPU 分配給容器的方式:考慮將 CPU 對齊到插槽邊界,而不是 NUMA 節點邊界。

進一步發展

在主要 CPU 管理器功能升級後,每個現有的策略選項都將遵循其升級過程,獨立於 CPU 管理器且彼此獨立。還有新增選項的空間,但對於比 CPU 管理器及其策略選項目前授予的靈活性更高的靈活性,需求也在不斷增長。

社群正在進行關於將 CPU 管理器和目前作為 kubelet 可執行檔一部分的其他資源管理器拆分為可插拔、獨立的 kubelet 外掛程式的對話。如果您對此工作感興趣,請加入 SIG Node 通訊管道 (Slack、郵件列表、每週會議) 上的對話。

進一步閱讀

請查看節點上的控制 CPU 管理策略任務頁面,以了解有關 CPU 管理器以及它如何與其他節點級資源管理器相關的更多資訊。

參與其中

此功能由 SIG Node 社群推動。請加入我們以與社群聯繫,並分享您對上述功能及其他方面的想法和回饋。我們期待收到您的來信!