Kubernetes v1.34:DRA 已進階至 GA
Kubernetes 1.34 來了,它為動態資源分配(Dynamic Resource Allocation,DRA)帶來了大量的增強功能!此版本標誌著一個重要的里程碑,resource.k8s.io
組中的許多 API 已進階至正式釋出(GA),從而釋放了在 Kubernetes 上管理裝置的全部潛力。除此之外,幾個關鍵特性已進入 Beta 階段,一批新的 Alpha 特性也預示著更強的表達能力和靈活性。
讓我們深入瞭解 Kubernetes 1.34 中 DRA 的新功能!
DRA 的核心現已達到 GA
v1.34 版本的主要亮點是 DRA 的核心已進階至正式釋出(General Availability)。
Kubernetes 動態資源分配 (DRA) 提供了一個靈活的框架來管理專用硬體和基礎設施資源,例如 GPU 或 FPGA。DRA 提供的 API 允許每個工作負載指定其所需裝置的屬性,但將實際裝置的分配工作留給排程器,從而提高了可靠性並改進了昂貴硬體的利用率。
隨著進階至 GA,DRA 已經穩定,並將長期成為 Kubernetes 的一部分。社群仍然可以期待在接下來的幾個 Kubernetes 版本中,會有一系列新功能被新增到 DRA 中,但它們不會對 DRA 做出任何破壞性更改。因此,使用者和 DRA 驅動程式的開發者可以放心地開始採用 DRA。
從 Kubernetes 1.34 開始,DRA 預設啟用;已達到 Beta 階段的 DRA 特性也**同樣**預設啟用。這是因為 DRA 的預設 API 版本現在是穩定的 v1
版本,而不是需要明確選擇啟用的早期版本(例如:v1beta1
或 v1beta2
)。
晉升至 Beta 的特性
幾個強大的特性已晉升至 Beta 階段,為使用 DRA 進行資源管理增加了更多的控制、靈活性和可觀察性。
管理員訪問標籤 已更新。在 v1.34 中,你可以將裝置支援限制為被授權使用它的人員(或軟體)。這是為了在 DRA 驅動程式請求管理員訪問許可權時授予額外許可權的情況下,避免許可權提升,並避免訪問正常應用程式(可能在另一個名字空間中)正在使用的裝置。該限制透過確保只有對帶有 resource.k8s.io/admin-access: "true"
標籤的名字空間有訪問許可權的使用者才能建立 adminAccess
欄位設定為 true 的 ResourceClaim 或 ResourceClaimTemplates 物件來實現。這確保了非管理員使用者不能濫用此功能。
優先順序列表 允許使用者為其工作負載指定一個可接受的裝置列表,而不僅僅是單一型別的裝置。因此,雖然工作負載可能在單個高效能 GPU 上執行效果最佳,但它也可能能夠在兩個中級 GPU 上執行。排程器將嘗試按列表順序滿足備選方案,因此工作負載將被分配到節點上可用的最佳裝置集。
kubelet 的 API 已更新,以報告透過 DRA 分配的 Pod 資源。這使得節點監控代理能夠了解節點上 Pod 的已分配 DRA 資源,並使得在 PodResources API 中使用 DRA 資訊來開發新功能和整合成為可能。
新的 Alpha 特性
Kubernetes 1.34 還引入了幾個新的 Alpha 特性,讓我們一窺使用 DRA 進行資源管理的未來。
DRA 中的擴充套件資源對映支援允許叢集管理員將 DRA 管理的資源作為**擴充套件資源**進行通告,從而允許開發人員使用熟悉的、更簡單的請求語法來使用它們,同時仍然受益於動態分配。這使得現有工作負載無需修改即可開始使用 DRA,為應用程式開發人員和叢集管理員簡化了向 DRA 的過渡。
可消費容量引入了一種靈活的裝置共享模型,其中來自不相關 Pod 的多個獨立資源宣告可以各自被分配到同一底層物理裝置的一部分。這個新功能透過可選的、管理員定義的共享策略進行管理,這些策略規定了裝置的總容量如何被平臺為每個請求劃分和強制執行。這允許在預定義分割槽不可行的情況下共享裝置。關於此功能的部落格文章即將釋出。
繫結條件透過允許 Kubernetes 排程器延遲將 Pod 繫結到節點,直到其所需的外部資源(如可掛載裝置或 FPGA)被確認完全準備好,從而提高了某些類別裝置的排程可靠性。這可以防止可能導致失敗的過早的 Pod 分配,並透過在 Pod 提交到節點之前明確建模資源就緒狀態,確保更穩健、可預測的排程。
DRA 的**資源健康狀態**透過 Pod Status 暴露分配給 Pod 的裝置的健康狀態,從而提高了可觀察性。無論裝置是透過 DRA 還是裝置外掛分配的,這都有效。這使得更容易理解不健康裝置的原因並做出正確響應。關於此功能的部落格文章即將釋出。
下一步是什麼?
雖然 DRA 在本週期晉升至 GA,但關於 DRA 的辛勤工作並未停止。我們計劃在接下來的幾個版本中將幾個處於 Alpha 和 Beta 階段的特性推向 GA,並希望繼續提高 DRA 的效能、可伸縮性和可靠性。因此,可以期待在 1.35 版本中看到同樣雄心勃勃的一系列 DRA 特性。
參與進來
一個好的起點是加入 WG Device Management 的 Slack 頻道和會議,會議時間對美國/歐洲和歐洲/亞太地區友好。
並非所有的增強想法都已經被追蹤為 issue,所以如果你想幫忙或者自己有一些想法,請來和我們交流!我們有各個層面的工作要做,從困難的核心變更到 kubectl 中的可用性增強,這些都可能由新手來承擔。
致謝
非常感謝本週期對 DRA 的新貢獻者們
- Alay Patel (alaypatel07)
- Gaurav Kumar Ghildiyal (gauravkghildiyal)
- JP (Jpsassine)
- Kobayashi Daisuke (KobayashiD27)
- Laura Lorenz (lauralorenz)
- Sunyanan Choochotkaew (sunya-ch)
- Swati Gupta (guptaNswati)
- Yu Liao (yliaog)