Kubernetes v1.32: Penelope

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

宣佈 Kubernetes v1.32:Penelope 正式釋出!

與以往的版本一樣,Kubernetes v1.32 的釋出引入了新的穩定(Stable)、測試(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 專案繼續提出多項針對動態資源分配(Dynamic Resource Allocation, DRA)的增強功能,這是 Kubernetes 資源管理系統的關鍵元件。這些增強功能旨在為需要專用硬體(如 GPU、FPGA 和網路介面卡)的工作負載提高資源分配的靈活性和效率。這些特性對於機器學習或高效能計算應用等用例特別有用。作為核心部分,DRA 結構化引數支援已升級至 Beta

節點和 Sidecar 容器的生活質量改進更新

SIG Node 除了 KEP 之外,還有以下亮點:

  1. 現在,當 kubelet 的健康檢查失敗時,會使用 systemd 看門狗(watchdog)功能來重啟 kubelet,同時限制了在給定時間段內的最大重啟次數。這增強了 kubelet 的可靠性。更多詳情,請參見拉取請求 #127566

  2. 在遇到映象拉取退避(Image Pull Back-off)錯誤時,Pod 狀態中顯示的訊息已得到改進,變得更加人性化,並能指示 Pod 處於此狀況的原因。當發生映象拉取退避時,錯誤資訊會附加到 Pod 規約中 status.containerStatuses[*].state.waiting.message 欄位,並在 reason 欄位中顯示 ImagePullBackOff 值。這一更改為你提供了更多上下文,幫助你識別問題的根本原因。更多詳情,請參見拉取請求 #127918

  3. Sidecar 容器特性計劃在 v1.33 版本中升級為穩定版。要檢視剩餘的工作項和使用者的反饋,請參見問題 #753 中的評論。

升級至穩定版的特性亮點

以下是 v1.32 版本釋出後升級為穩定版的部分改進功能。

自定義資源的欄位選擇器

自定義資源欄位選擇器允許開發者為自定義資源新增欄位選擇器,這與內建 Kubernetes 物件的功能類似。這使得對自定義資源的過濾更加高效和精確,從而促進了更好的 API 設計實踐。

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

支援調整記憶體支援的卷的大小

此功能可以根據 Pod 的資源限制動態調整記憶體支援的卷的大小,從而提高了工作負載的可移植性和節點資源的整體利用率。

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

繫結服務賬號令牌的改進

在服務賬號令牌的宣告(claims)中包含了節點名稱,這允許使用者在授權和准入控制(ValidatingAdmissionPolicy)中使用這些資訊。此外,這一改進還能防止服務賬號憑證成為節點的許可權提升路徑。

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

結構化授權配置

可以在 API 伺服器中配置多個授權器(authorizer),以實現結構化的授權決策,並支援在 Webhook 中使用 CEL 匹配條件。這項工作是 KEP #3221 的一部分,由 SIG Auth 完成。

自動刪除由 StatefulSet 建立的 PVC

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

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

升級至 Beta 版的特性亮點

以下是 v1.32 版本釋出後升級為 Beta 版的部分改進功能。

Job API 的 managed-by 機制

在 v1.32 版本中,Job 的 managedBy 欄位已升級為 Beta 版。此特性允許外部控制器(如 Kueue)管理 Job 的同步,為與高階工作負載管理系統整合提供了更大的靈活性。

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

僅允許已配置的端點進行匿名認證

此特性允許管理員指定哪些端點可以接受匿名請求。例如,管理員可以選擇僅允許對健康檢查端點(如 /healthz/livez/readyz)進行匿名訪問,同時確保即使在使用者錯誤配置了 RBAC 的情況下,也能防止對其他叢集端點或資源的匿名訪問。

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

kube-scheduler 中用於精確重新排隊的每個外掛回撥函式 增強

此特性透過每個外掛的回撥函式(QueueingHint)實現了更高效的排程重試決策,從而提高了排程吞吐量。現在所有外掛都具有 QueueingHints。

這項工作是 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 排程器已透過非同步搶佔(Asynchronous Preemption)功能得到了增強,該功能透過非同步處理搶佔操作來提高排程吞吐量。搶佔透過驅逐較低優先順序的 Pod 來確保較高優先順序的 Pod 獲得所需資源,但此過程之前涉及如刪除 Pod 的 API 呼叫等繁重操作,從而減慢了排程器的速度。透過此項增強,這些任務現在可以並行處理,使排程器能夠繼續排程其他 Pod 而不會出現延遲。這一改進對於 Pod 流失率高或排程失敗頻繁的叢集尤其有益,可確保排程過程更加高效和有彈性。

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

使用 CEL 表示式的變更性准入策略

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

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

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

Pod 級資源規約

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

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

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

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

允許 PreStop 鉤子的 sleep 操作值為零

此增強功能引入了為 Kubernetes 中的 PreStop 生命週期鉤子設定零秒睡眠時長的能力,為資源驗證和自定義提供了一個更靈活的無操作選項。以前,嘗試為 sleep 操作定義一個零值會導致驗證錯誤,限制了其使用。透過此更新,使用者可以將零秒時長配置為有效的睡眠設定,從而在需要時實現立即執行和終止行為。

此增強功能是向後相容的,作為一項可選功能引入,由 PodLifecycleSleepActionAllowZero 特性門控控制。這一更改對於需要 PreStop 鉤子進行驗證或准入 Webhook 處理而不需要實際睡眠時長的場景特別有益。透過與 Go 函式 time.After 的功能保持一致,此更新簡化了配置並擴充套件了 Kubernetes 工作負載的可用性。

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

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

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

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

核心元件的新 statusz 和 flagz 端點

你可以為核心元件啟用兩個新的 HTTP 端點:/statusz/flagz。這些端點透過讓你深入瞭解元件執行的版本(例如 Golang 版本),以及其正常執行時間、元件執行時使用的命令列標誌等詳細資訊,從而增強了叢集的可除錯性;這使得診斷執行時和配置問題變得更加容易。

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

Windows 強勢迴歸!

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

此外,還為具有多個 NUMA 節點的 Windows 節點增加了 CPU 和記憶體親和性支援,並改進了 CPU 管理器、記憶體管理器和拓撲管理器。

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

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

升級為穩定版

這裡列出了所有升級到穩定版(也稱為**正式釋出**)的功能。有關包括新功能和從 Alpha 升級到 Beta 的完整更新列表,請參閱釋出說明。

此版本共有 13 項增強功能升級為穩定版:

棄用和移除

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

舊版 DRA 實現的撤銷

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

然而,在 Kubernetes v1.32 中,這種 DRA 的方法將發生重大改變。與原始實現相關的程式碼將被移除,使 KEP #4381 成為“新的”基礎功能。

改變現有方法的原因是它與叢集自動擴縮容不相容,因為資源可用性不透明,這使得 Cluster Autoscaler 和控制器的決策變得複雜。新新增的結構化引數模型替代了該功能。

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

要了解更多資訊,請參閱增強功能問題 #3063

API 移除

Kubernetes v1.32 中有一項 API 移除:

  • flowcontrol.apiserver.k8s.io/v1beta3 版本的 FlowSchema 和 PriorityLevelConfiguration API 已被移除。為準備此變更,你可以編輯現有的清單檔案並重寫客戶端軟體,以使用自 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 版本而付出的辛勤工作。釋出團隊的成員範圍從首次參與的“影子”成員到擁有多個釋出週期經驗的迴歸團隊負責人。我們特別感謝我們的釋出負責人 Frederico Muñoz,他優雅地領導了釋出團隊,並以最細緻的態度處理任何事務,確保了本次釋出的順利和高效。最後但同樣重要的是,我們要感謝所有的釋出成員——負責人和影子成員們——以及以下 SIGs,感謝他們在這 14 周的釋出工作中取得的卓越成果:

  • SIG Docs - 在文件和部落格審閱方面提供了基礎性支援,並與釋出溝通和文件團隊持續合作;
  • SIG k8s InfraSIG Testing - 在維護測試框架以及所有必要的基礎設施元件方面做出了傑出工作;
  • SIG Release 和所有釋出經理 - 在整個釋出過程的協調中提供了令人難以置信的支援,以優雅及時的方式解決了即使是最具挑戰性的問題。

專案速度

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

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

在整個雲原生生態系統中,這一數字上升到 433 家公司,總計 2441 名貢獻者。與上一個釋出週期相比,總貢獻量增加了 7%,參與的公司數量增加了 14%,展示了雲原生專案背後強大的興趣和社群支援。

此資料來源

我們所說的貢獻是指某人提交程式碼、進行程式碼審查、發表評論、建立問題或拉取請求、審查拉取請求(包括部落格和文件)或對問題和拉取請求發表評論。

如果你有興趣貢獻,請訪問我們貢獻者網站上的入門指南

檢視 DevStats 以瞭解有關 Kubernetes 專案和社群整體速度的更多資訊。

活動更新

探索 2025 年 3 月至 6 月即將舉行的 Kubernetes 和雲原生活動,包括 KubeCon 和 KCD。保持資訊靈通,與 Kubernetes 社群互動。

2025 年 3 月

2025 年 4 月

2025 年 5 月

2025 年 6 月

即將舉行的釋出網路研討會

歡迎在 2025 年 1 月 9 日(星期四)下午 5:00 (UTC) 加入 Kubernetes v1.32 釋出團隊成員的行列,瞭解此版本的釋出亮點,以及有助於規劃升級的棄用和移除資訊。更多資訊和註冊,請訪問 CNCF 線上專案網站上的活動頁面

參與其中

參與 Kubernetes 最簡單的方式是加入眾多與你興趣相符的特別興趣小組(SIG)之一。有什麼你想向 Kubernetes 社群廣播的嗎?在我們每週的社群會議上分享你的聲音,並透過以下渠道。感謝你一直以來的反饋和支援。