Kubernetes v1.32 搶先看

隨著我們越來越接近 Kubernetes v1.32 的發布日期,專案持續發展和成熟。為了專案的整體健全性,某些功能可能會被棄用、移除或以更好的功能取代。

本部落格概述了 Kubernetes v1.32 版本的一些計畫變更,發布團隊認為您應該了解這些變更,以便持續維護您的 Kubernetes 環境並隨時掌握最新變動。以下列出的資訊基於 v1.32 版本的目前狀態,並可能在實際發布日期之前變更。

Kubernetes API 移除和棄用流程

Kubernetes 專案針對功能制定了完善的文件化 棄用政策。此政策聲明,只有在有更新、更穩定的 API 版本可用時,才能棄用穩定的 API,且 API 在每個穩定性層級都有最短的生命週期。已棄用的 API 已標記為將在未來的 Kubernetes 版本中移除,但在移除之前(自棄用起至少一年)仍會繼續運作。使用已棄用的 API 將會顯示警告。移除的 API 在目前版本中已不再可用,因此您必須遷移以改用替代方案。

  • 一般可用 (GA) 或穩定的 API 版本可能會被標記為已棄用,但不得在 Kubernetes 的主要版本中移除。

  • Beta 或預先發布的 API 版本在棄用後必須支援 3 個版本。

  • Alpha 或實驗性 API 版本可能會在任何版本中移除,恕不另行發出棄用通知;如果同一功能的不同實作已到位,此流程可能會變成撤回。

無論 API 是因為功能從 Beta 升級到穩定版而移除,還是因為該 API 未能成功,所有移除都符合此棄用政策。每當 API 移除時,都會在 棄用指南 中說明遷移選項。

關於撤回舊版 DRA 實作的注意事項

#3063 增強功能在 Kubernetes 1.26 中引入了動態資源分配 (DRA)。

然而,在 Kubernetes v1.32 中,這種 DRA 方法將會大幅變更。與原始實作相關的程式碼將會移除,僅留下 KEP #4381 作為「新的」基礎功能。

變更現有方法的決定源於其與叢集自動擴展的不相容性,因為資源可用性不明確,使得 Cluster Autoscaler 和控制器的決策制定變得複雜。新加入的結構化參數模型取代了此功能。

移除將使 Kubernetes 能夠更可預測地處理新的硬體需求和資源宣告,繞過與 kube-apiserver 來回 API 呼叫的複雜性。

如需更多資訊,另請參閱增強功能問題 #3063

API 移除

Kubernetes v1.32 僅計畫移除單一 API。

  • FlowSchema 和 PriorityLevelConfiguration 的 flowcontrol.apiserver.k8s.io/v1beta3 API 版本已移除。為了準備因應此變更,您可以編輯現有的 manifest 並重寫用戶端軟體,以使用自 v1.29 起可用的 flowcontrol.apiserver.k8s.io/v1 API 版本。所有現有的持久化物件都可以透過新的 API 存取。flowcontrol.apiserver.k8s.io/v1beta3 中的重大變更包括 PriorityLevelConfiguration spec.limited.nominalConcurrencyShares 欄位僅在未指定時預設為 30,且明確值 0 不會變更為 30。

如需更多資訊,請參閱 API 棄用指南

Kubernetes v1.32 搶先看

以下增強功能列表很可能會包含在 v1.32 版本中。這並非承諾,且發布內容可能會變更。

更多 DRA 增強功能!

在此版本中,如同前一個版本,Kubernetes 專案持續針對動態資源分配 (DRA) 提出多項增強功能,DRA 是 Kubernetes 資源管理系統的關鍵組件。這些增強功能旨在提高需要特殊硬體 (例如 GPU、FPGA 和網路介面卡) 的工作負載之資源分配彈性和效率。此版本引入了多項改進,包括在 Pod 狀態中新增資源健康狀態,如 KEP #4680 中所述。

將資源健康狀態新增至 Pod 狀態

當 Pod 使用已故障或暫時不健康的裝置時,很難知道。KEP #4680 建議透過 Pod status 公開裝置健康狀態,讓 Pod 崩潰的疑難排解更加容易。

Windows 強勢回歸!

KEP #4802 在 Kubernetes 叢集中新增了對 Windows 節點正常關機的支援。在此版本之前,Kubernetes 為 Linux 節點提供了正常節點關機功能,但缺乏對 Windows 的同等支援。此增強功能使 Windows 節點上的 kubelet 能夠正確處理系統關機事件。這樣做可確保在 Windows 節點上執行的 Pod 正常終止,允許重新排程工作負載而不會中斷。此改進增強了包含 Windows 節點的叢集的可靠性和穩定性,尤其是在計畫性維護或任何系統更新期間。

允許環境變數中使用特殊字元

隨著此 增強功能 升級至 Beta 版,Kubernetes 現在允許幾乎所有可列印的 ASCII 字元(不包括「=」)用作環境變數名稱。此變更解決了先前對變數命名的限制,透過滿足各種應用程式需求,促進 Kubernetes 更廣泛的採用。寬鬆的驗證將透過 RelaxedEnvironmentVariableValidation 功能閘道預設啟用,確保使用者可以輕鬆利用環境變數而沒有嚴格的限制,從而提高使用 .NET Core 等需要組態中使用特殊字元的應用程式開發人員的彈性。

讓 Kubernetes 了解 LoadBalancer 行為

KEP #1860 升級至 GA 版,為 type: LoadBalancer 的服務引入 ipMode 欄位,可以設定為 "VIP""Proxy"。此增強功能旨在改進雲端供應商負載平衡器與 kube-proxy 的互動方式,且此變更對終端使用者而言是透明的。使用 "VIP" 時,kube-proxy 的現有行為會保留,其中 kube-proxy 處理負載平衡。使用 "Proxy" 會導致流量直接傳送到負載平衡器,讓雲端供應商可以更好地控制對 kube-proxy 的依賴;這表示對於某些雲端供應商,您可能會看到負載平衡器的效能有所提升。

重試為資源產生名稱

增強功能 改進了使用 generateName 欄位建立的 Kubernetes 資源之名稱衝突處理方式。先前,如果發生名稱衝突,API 伺服器會傳回 409 HTTP Conflict 錯誤,且用戶端必須手動重試請求。透過此更新,API 伺服器會在發生衝突時自動重試產生新名稱最多七次。這大幅降低了衝突的機率,確保順利產生最多 100 萬個名稱,衝突機率低於 0.1%,為大規模工作負載提供更高的彈性。

想了解更多資訊嗎?

新功能和棄用也會在 Kubernetes 版本說明中宣布。我們將在 Kubernetes v1.32 的版本變更記錄 (CHANGELOG) 中正式宣布此版本的新功能。

您可以在以下版本的版本說明中查看變更公告: