Kubernetes v1.32:Penelope

編輯:Matteo Bianchi、Edith Puclla、William Rizzo、Ryota Sawada、Rashan Smith

Kubernetes v1.32:Penelope 發佈公告!

與先前的版本一致,Kubernetes v1.32 的發佈引入了新的穩定版、Beta 版和 Alpha 版功能。高品質版本的持續交付,彰顯了我們開發週期的強度以及社群的蓬勃發展支援。此版本總共包含 44 項增強功能。在這些增強功能中,有 13 項已升級為穩定版,12 項進入 Beta 版,19 項進入 Alpha 版。

Kubernetes v1.32 的發佈主題是「Penelope」。

如果 Kubernetes 在古希臘文中是「飛行員」的意思,那麼在此版本中,我們從這個起源開始,反思 Kubernetes 的過去 10 年以及我們的成就:每個發佈週期都是一次旅程,就像 Penelope 在「奧德賽」中一樣,
編織了 10 年——每天晚上拆除她白天所做的部分——每個版本也一樣,添加新功能並移除其他功能,儘管這裡的目的更明確,是為了不斷改進 Kubernetes。v1.32 是 Kubernetes 在其第一個十年週年紀念中的最後一個版本,我們希望向所有參與全球 Kubernetes 團隊的人致敬,他們在雲原生海洋中航行,經歷了危險和挑戰:願我們繼續共同編織 Kubernetes 的未來。

近期重點功能更新

DRA 增強功能注意事項

在此版本中,與上一個版本一樣,Kubernetes 專案持續提出多項針對動態資源分配 (DRA) 的增強功能,DRA 是 Kubernetes 資源管理系統的關鍵組件。這些增強功能旨在提高需要特殊硬體的 workload(例如 GPU、FPGA 和網路介面卡)的資源分配彈性和效率。這些功能對於機器學習或高效能運算應用程式等用例特別有用。啟用 DRA 結構化參數支援的核心部分已升級為 Beta 版

節點和 Sidecar 容器更新的品質提升

SIG Node 有以下超出 KEP 的重點

  1. systemd 監控功能現在用於在 kubelet 健康檢查失敗時重新啟動 kubelet,同時也限制在給定時間段內的最大重新啟動次數。這增強了 kubelet 的可靠性。如需更多詳細資訊,請參閱 pull request #127566

  2. 如果遇到映像檔拉取退避錯誤,Pod 狀態中顯示的訊息已改進為更人性化,並指示 Pod 處於此狀況的原因詳細資訊。當發生映像檔拉取退避時,錯誤會附加到 Pod 規格中的 status.containerStatuses[*].state.waiting.message 欄位,並在 reason 欄位中包含 ImagePullBackOff 值。此變更為您提供更多上下文,並協助您識別問題的根本原因。如需更多詳細資訊,請參閱 pull request #127918

  3. Sidecar 容器功能旨在 v1.33 版本中升級為穩定版。若要查看剩餘的工作項目和使用者的回饋,請參閱 issue #753 中的評論。

升級為穩定版的功能重點

以下是 v1.32 版本發佈後,現已穩定的部分改進精選。

自訂資源欄位選擇器

自訂資源欄位選擇器允許開發人員將欄位選擇器新增至自訂資源,鏡像內建 Kubernetes 物件的可用功能。這允許更有效率且精確地篩選自訂資源,從而促進更好的 API 設計實務。

此工作是作為 KEP #4358 的一部分完成,由 SIG API Machinery 負責。

支援調整記憶體支援的磁碟區大小

此功能可根據 Pod 資源限制動態調整記憶體支援的磁碟區大小,從而提高 workload 的可移植性和整體節點資源利用率。

此工作是作為 KEP #1967 的一部分完成,由 SIG Node 負責。

綁定服務帳戶權杖改進

在服務帳戶權杖宣告中包含節點名稱,允許使用者在授權和許可控制 (ValidatingAdmissionPolicy) 期間使用此類資訊。此外,此改進可防止服務帳戶憑證成為節點的權限提升路徑。

此工作是作為 KEP #4193 的一部分完成,由 SIG Auth 負責。

結構化授權配置

可以在 API 伺服器中配置多個授權器,以允許結構化授權決策,並支援 Webhook 中的 CEL 匹配條件。此工作是作為 KEP #3221 的一部分完成,由 SIG Auth 負責。

自動移除 StatefulSet 建立的 PVC

StatefulSet 建立的 PersistentVolumeClaims (PVC) 在不再需要時會自動刪除,同時確保 StatefulSet 更新和節點維護期間的資料持久性。此功能簡化了 StatefulSet 的儲存管理,並降低了孤立 PVC 的風險。

此工作是作為 KEP #1847 的一部分完成,由 SIG Apps 負責。

升級為 Beta 版的功能重點

以下是 v1.32 版本發佈後,現已成為 Beta 版的部分改進精選。

Job API managed-by 機制

Jobs 的 managedBy 欄位已在 v1.32 版本中升級為 Beta 版。此功能使外部控制器(例如 Kueue)能夠管理 Job 同步,從而提供更大的彈性,並與進階 workload 管理系統整合。

此工作是作為 KEP #4368 的一部分完成,由 SIG Apps 負責。

僅允許已配置端點的匿名驗證

此功能讓管理員可以指定允許哪些端點進行匿名請求。例如,管理員可以選擇僅允許匿名存取健康端點,如 /healthz/livez/readyz,同時確保防止匿名存取其他叢集端點或資源,即使使用者錯誤配置 RBAC 也是如此。

此工作是作為 KEP #4633 的一部分完成,由 SIG Auth 負責。

kube-scheduler 中每個外掛程式的回呼函式,以實現精確的重新排隊增強功能

此功能透過每個外掛程式的回呼函式 (QueueingHint) 更有效率的排程重試決策,增強了排程吞吐量。現在所有外掛程式都具有 QueueingHint。

此工作是作為 KEP #4247 的一部分完成,由 SIG Scheduling 負責。

從磁碟區擴展失敗中恢復

此功能讓使用者可以透過以較小的尺寸重試,從磁碟區擴展失敗中恢復。此增強功能確保磁碟區擴展更具彈性和可靠性,從而降低流程期間資料遺失或損壞的風險。

此工作是作為 KEP #1790 的一部分完成,由 SIG Storage 負責。

磁碟區群組快照

此功能引入了 VolumeGroupSnapshot API,可讓使用者一起拍攝多個磁碟區的快照,確保跨磁碟區的資料一致性。

此工作是作為 KEP #3476 的一部分完成,由 SIG Storage 負責。

結構化參數支援

動態資源分配 (DRA) 的核心部分,結構化參數支援,已升級為 Beta 版。這允許 kube-scheduler 和 Cluster Autoscaler 直接模擬宣告分配,而無需第三方驅動程式。這些組件現在可以根據叢集目前狀態預測資源請求是否可以滿足,而無需實際提交分配。透過消除第三方驅動程式驗證或測試分配的需求,此功能改進了資源分配的規劃和決策,使排程和擴展流程更有效率。

此工作是作為 KEP #4381 的一部分完成,由 WG Device Management(包含 SIG NodeSIG SchedulingSIG Autoscaling 的跨職能團隊)負責。

標籤與欄位選擇器授權

標籤和欄位選擇器可用於授權決策。節點授權器自動利用此功能來限制節點僅列出或監看其 Pod。可以更新 Webhook 授權器,以根據使用的標籤或欄位選擇器來限制請求。

此工作是作為 KEP #4601 的一部分完成,由 SIG Auth 負責。

Alpha 版新功能重點

以下是 v1.32 版本中作為 Alpha 版功能引入的部分關鍵改進精選。

Kubernetes 排程器中的非同步搶佔

Kubernetes 排程器已透過非同步搶佔功能進行增強,此功能透過非同步處理搶佔操作來提高排程吞吐量。搶佔可確保較高優先順序的 Pod 獲得其所需的資源,方法是驅逐較低優先順序的 Pod,但此流程先前涉及繁重的操作,例如呼叫 API 以刪除 Pod,從而減慢排程器的速度。透過此增強功能,此類任務現在可以平行處理,讓排程器能夠繼續排程其他 Pod 而不會延遲。此改進在 Pod 變動率高或頻繁排程失敗的叢集中特別有利,可確保更有效率且彈性的排程流程。

此工作是作為 KEP #4832 的一部分完成,由 SIG Scheduling 負責。

使用 CEL 表達式變更准入策略

此功能利用 CEL 的物件實例化和 JSON Patch 策略,結合伺服器端套用 (Server Side Apply) 的合併演算法。它簡化了策略定義、減少了變更衝突,並提升了准入控制效能,同時為 Kubernetes 中更穩健、可擴展的策略框架奠定了基礎。

Kubernetes API 伺服器現在支援基於通用表達式語言 (CEL) 的變更准入策略,為變更准入 Webhook 提供了一個輕量級、高效的替代方案。透過此增強功能,管理員可以使用 CEL 來宣告變更,例如設定標籤、預設欄位或注入 Sidecar,只需使用簡單的宣告式表達式即可。這種方法降低了操作複雜性,消除了對 Webhook 的需求,並直接與 kube-apiserver 整合,提供更快、更可靠的程序內變更處理。

這項工作是 KEP #3962 的一部分,由 SIG API Machinery 完成。

Pod 層級資源規格

此增強功能簡化了 Kubernetes 中的資源管理,透過在 Pod 層級設定資源請求和限制,建立一個 Pod 中所有容器可以動態使用的共享池。這對於具有容器資源需求波動或突發的工作負載尤其有價值,因為它可以最大限度地減少過度配置並提高整體資源效率。

透過利用 Pod 層級的 Linux cgroup 設定,Kubernetes 確保了這些資源限制得到執行,同時使緊密耦合的容器能夠更有效地協作,而不會受到人為限制。重要的是,此功能保持了與現有容器層級資源設定的向後相容性,允許使用者逐步採用它,而不會中斷目前的工作流程或現有配置。

這標誌著多容器 Pod 的顯著改進,因為它降低了跨容器管理資源分配的操作複雜性。它還為緊密集成的應用程式(例如 Sidecar 架構)提供了效能提升,在這些架構中,容器共享工作負載或相互依賴彼此的可用性以實現最佳效能。

這項工作是 KEP #2837 的一部分,由 SIG Node 完成。

允許 PreStop Hook 的 Sleep Action 使用零值

此增強功能引入了為 Kubernetes 中 PreStop 生命周期 Hook 設定零秒睡眠持續時間的能力,為資源驗證和自訂提供了更靈活和無操作的選項。先前,嘗試為 Sleep Action 定義零值會導致驗證錯誤,限制了其使用。透過此更新,使用者可以將零秒持續時間配置為有效的睡眠設定,在需要時啟用立即執行和終止行為。

此增強功能向後相容,作為由 PodLifecycleSleepActionAllowZero 功能閘道控制的可選擇加入功能引入。此變更對於需要 PreStop Hook 進行驗證或准入 Webhook 處理而無需實際睡眠持續時間的場景特別有利。透過與 time.After Go 函數的功能對齊,此更新簡化了配置並擴展了 Kubernetes 工作負載的可用性。

這項工作是 KEP #4818 的一部分,由 SIG Node 完成。

DRA:資源宣告狀態的標準化網路介面資料

此增強功能新增了一個欄位,允許驅動程式報告 ResourceClaim 中每個已分配物件的特定裝置狀態資料。它還建立了一種標準化的方式來表示網路裝置資訊。

這項工作是 KEP #4817 的一部分,由 SIG Network 完成。

核心組件的新 statusz 和 flagz 端點

您可以為核心組件啟用兩個新的 HTTP 端點 /statusz/flagz。這些端點透過深入了解組件正在運行的版本(例如 Golang 版本)以及其運行時間的詳細資訊,以及組件執行的命令列 Flag,增強了叢集的可除錯性;使其更容易診斷運行時和配置問題。

這項工作是 KEP #4827KEP #4828 的一部分,由 SIG Instrumentation 完成。

Windows 的反擊!

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

此外,還為 Windows 節點新增了 CPU 和記憶體親和性支援,並改進了 CPU 管理器、記憶體管理器和拓撲管理器。

這項工作分別是 KEP #4802KEP #4885 的一部分,由 SIG Windows 完成。

1.32 版本的畢業、棄用和移除

畢業為穩定版 (Stable)

此處列出了所有畢業為穩定版(也稱為正式發布)的功能。如需包含新功能和從 Alpha 升級到 Beta 的完整更新列表,請參閱發行說明。

此版本總共包含 13 項升級為穩定版的增強功能

棄用和移除

隨著 Kubernetes 的發展和成熟,為了專案的整體健康狀況,某些功能可能會被棄用、移除或被更好的功能取代。有關此流程的更多詳細資訊,請參閱 Kubernetes 棄用和移除策略

撤回舊的 DRA 實作

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

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

變更現有方法的決定源於其與叢集自動擴展的不相容性,因為資源可用性是不透明的,這使得叢集自動擴展器和控制器難以做出決策。新增加的結構化參數模型取代了該功能。

此移除將使 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 發行的完整詳細資訊。

可用性

Kubernetes v1.32 可在 GitHubKubernetes 下載頁面上下載。

若要開始使用 Kubernetes,請查看這些互動式教學課程,或使用 minikube 運行本機 Kubernetes 叢集。您也可以使用 kubeadm 輕鬆安裝 v1.32。

發行團隊

Kubernetes 的實現離不開社群的支援、投入和努力。每個發行團隊都由敬業的社群志願者組成,他們共同努力建構組成您所依賴的 Kubernetes 發行版本的眾多部分。這需要我們社群各個角落的人員的專業技能,從程式碼本身到其文件和專案管理。

我們要感謝整個 發行團隊 花費數小時辛勤工作,為我們的社群交付 Kubernetes v1.32 發行版本。發行團隊的成員資格範圍從首次參與的 Shadow 到在多個發行週期中累積經驗的回歸團隊負責人。在此特別感謝我們的發行負責人 Frederico Muñoz,他優雅地領導發行團隊,並以極其謹慎的態度處理任何事務,確保此版本的執行順利高效。最後但並非最不重要的是,非常感謝所有發行成員(負責人和 Shadow)以及以下 SIG 在這 14 週的發行工作中取得的卓越工作和成果

  • SIG Docs - 感謝在文件和部落格審閱以及與發行溝通和文件團隊持續協作方面的基本支援;
  • SIG k8s InfraSIG Testing - 感謝在保持測試框架檢查以及所有必要的基礎架構組件方面的出色工作;
  • SIG Release 和所有發行經理 - 感謝在整個發行協調過程中提供的令人難以置信的支援,即使是最具挑戰性的問題也能以優雅和及時的方式解決。

專案速度

CNCF K8s DevStats 專案 匯總了與 Kubernetes 和各種子專案速度相關的許多有趣資料點。這包括從個人貢獻到貢獻公司的數量等所有內容,並說明了為發展這個生態系統所投入的努力的深度和廣度。

在 v1.32 發行週期(從 9 月 9 日到 12 月 11 日,為期 14 週)中,截至撰寫本文時,我們看到來自多達 125 家不同公司和 559 名個人的 Kubernetes 貢獻。

在整個雲原生生態系統中,這個數字上升到 433 家公司,總共有 2441 位貢獻者。與先前的發行版本週期相比,整體貢獻增加了 7%,參與的公司數量增加了 14%,這顯示了雲原生專案背後的強烈興趣和社群支持。

此資料的來源

我們所說的貢獻是指某人進行提交、程式碼審閱、評論、建立 Issue 或 PR、審閱 PR(包括部落格和文件)或評論 Issue 和 PR。

如果您有興趣參與貢獻,請訪問我們的貢獻者網站上的 Getting Started

查看 DevStats 以了解有關 Kubernetes 專案和社群整體速度的更多資訊。

活動更新

探索 2025 年 3 月至 6 月即將到來的 Kubernetes 和雲原生活動,包括 KubeCon 和 KCD。隨時了解情況並與 Kubernetes 社群互動。

2025 年 3 月

2025 年 4 月

2025 年 5 月

2025 年 6 月

即將舉行的發行版本網路研討會

加入 Kubernetes v1.32 發行團隊成員於 2025 年 1 月 9 日星期四下午 5:00 (UTC),了解此版本的發行重點,以及有助於規劃升級的棄用和移除。如需更多資訊和註冊,請造訪 CNCF 線上計畫網站上的活動頁面

參與其中

參與 Kubernetes 最簡單的方法是加入許多與您的興趣相符的特殊興趣小組 (SIG) 之一。有什麼想向 Kubernetes 社群廣播的嗎?在我們的每週社群會議以及透過以下管道分享您的聲音。感謝您持續的回饋和支持。