Kubernetes v1.34 搶先看

Kubernetes v1.34 將於 2025 年 8 月底釋出。此版本不包含任何移除或棄用,但包含了大量增強功能。以下是我們在此週期中最期待的一些功能!

請注意,此資訊反映了 v1.34 開發的當前狀態,釋出前可能會發生變化。

以下列表重點介紹了一些可能包含在 v1.34 版本中的顯著增強功能,但這並非所有計劃變更的詳盡列表。這不是一個承諾,釋出內容可能會發生變化。

DRA 核心功能趨於穩定

動態資源分配 (DRA) 提供了一種靈活的方式來對 Kubernetes 叢集中的 GPU 或自定義硬體等裝置進行分類、請求和使用。

自 v1.30 版本以來,DRA 一直圍繞著使用對 Kubernetes 核心不透明的**結構化引數**來宣告裝置。相關的增強提案 KEP-4381 從儲存卷的動態供應中汲取了靈感。帶有結構化引數的 DRA 依賴於一組支援的 API 型別:在 resource.k8s.io 下的 ResourceClaim、DeviceClass、ResourceClaimTemplate 和 ResourceSlice API 型別,同時透過新的 resourceClaims 欄位擴充套件了 Pod 的 .spec。DRA 的核心功能目標是在 Kubernetes v1.34 中達到穩定版本。

透過 DRA,裝置驅動程式和叢集管理員可以定義可用的裝置類。工作負載可以在裝置請求中宣告某個裝置類的裝置。Kubernetes 將匹配的裝置分配給特定的宣告,並將相應的 Pod 放置在可以訪問所分配裝置的節點上。該框架提供了使用 CEL 進行靈活的裝置過濾、集中式裝置分類和簡化的 Pod 請求等諸多好處。

此功能升級後,resource.k8s.io/v1 API 將預設可用。

使用 ServiceAccount 令牌進行映象拉取身份驗證

kubelet 憑證提供商的 ServiceAccount 令牌整合很可能在 Kubernetes v1.34 中達到 Beta 階段並預設啟用。這允許 kubelet 在從需要身份驗證的容器映象倉庫中拉取映象時使用這些令牌。

該支援已作為 Alpha 功能存在,並在 KEP-4412 中進行跟蹤。

現有的 Alpha 整合允許 kubelet 使用短期的、自動輪換的 ServiceAccount 令牌(遵循 OIDC 相容的語義)向容器映象倉庫進行身份驗證。每個令牌都作用於一個關聯的 Pod;整個機制取代了對長期映象拉取 Secret 的需求。

採用這種新方法可以降低安全風險,支援工作負載級別的身份,並有助於減少運營開銷。它使映象拉取身份驗證更接近現代的、具有身份感知能力的良好實踐。

Deployment 的 Pod 替換策略

在對 Deployment 進行更改後,正在終止的 Pod 可能會在相當長的時間內保持執行狀態,並可能消耗額外的資源。作為 KEP-3973 的一部分,將為 Deployment 引入 .spec.podReplacementPolicy 欄位(作為 Alpha 功能)。

如果你的叢集啟用了此功能,你將能夠選擇以下兩種策略之一

TerminationStarted
一旦舊 Pod 開始終止,就立即建立新 Pod,從而加快滾動更新速度,但代價是可能消耗更多資源。
TerminationComplete
等到舊 Pod 完全終止後再建立新 Pod,這會導致滾動更新速度變慢,但能確保資源消耗得到控制。

此功能允許你選擇在更新或擴縮容期間何時建立新 Pod,從而使 Deployment 的行為更具可預測性。當你在資源受限的叢集中工作或處理具有較長終止週期的工作負載時,此功能非常有用。

預計此功能將作為 Alpha 功能提供,可以透過在 API Server 和 kube-controller-manager 中使用 DeploymentPodReplacementPolicyDeploymentReplicaSetTerminatingReplicas 特性門控來啟用。

kubelet 和 API Server 的生產就緒級追蹤

為了解決長期以來透過關聯不連貫的日誌來除錯節點級問題的挑戰,KEP-2831 提供了對 kubelet 深入的、上下文相關的洞察。

此功能使用與供應商無關的 OpenTelemetry 標準來檢測關鍵的 kubelet 操作,特別是其對容器執行時介面 (CRI) 的 gRPC 呼叫。它允許操作員視覺化事件的整個生命週期(例如:Pod 啟動),從而精確定位延遲和錯誤的來源。其最強大的方面是追蹤上下文的傳播;kubelet 在其請求中傳遞一個追蹤 ID 給容器執行時,從而使執行時能夠連結其自身的跨度(span)。

這項工作得到了一個並行增強功能 KEP-647 的補充,該增強功能為 Kubernetes API Server 帶來了相同的追蹤能力。這些增強功能共同提供了一個更統一的、端到端的事件檢視,簡化了從控制平面到節點精確定位延遲和錯誤的過程。這些功能已經透過官方的 Kubernetes 釋出流程逐漸成熟。KEP-2831 在 v1.25 中作為 Alpha 功能引入,而 KEP-647 在 v1.22 中作為 Alpha 功能首次亮相。這兩項增強功能都在 v1.27 版本中一起升級為 Beta。展望未來,Kubelet 追蹤 (KEP-2831) 和 API Server 追蹤 (KEP-647) 現在目標是在即將到來的 v1.34 版本中畢業為穩定版。

服務的 PreferSameZonePreferSameNode 流量分發

Kubernetes Service 中的 spec.trafficDistribution 欄位允許使用者表達關於流量應如何路由到 Service 端點的偏好。

KEP-3015 棄用了 PreferClose 並引入了兩個額外的值:PreferSameZonePreferSameNodePreferSameZone 等同於當前的 PreferClosePreferSameNode 優先將流量傳送到與客戶端位於同一節點上的端點。

此功能在 v1.33 中透過 PreferSameTrafficDistribution 特性門控引入。其目標是在 v1.34 中升級為 Beta 版本,並預設啟用該特性門控。

支援 KYAML:一種 Kubernetes 的 YAML 方言

KYAML 旨在成為一種更安全、歧義更少的 YAML 子集,專為 Kubernetes 設計。無論你使用哪個版本的 Kubernetes,你都可以使用 KYAML 來編寫清單和/或 Helm charts。你可以編寫 KYAML 並將其作為輸入傳遞給**任何**版本的 kubectl,因為所有 KYAML 檔案也都是有效的 YAML 檔案。在 kubectl v1.34 中,我們期望你也能請求 kubectl 輸出 KYAML 格式(如 kubectl get -o kyaml …)。如果你願意,仍然可以請求 JSON 或 YAML 格式的輸出。

KYAML 解決了 YAML 和 JSON 的特定挑戰。YAML 的重要空白要求仔細注意縮排和巢狀,而其可選的字串引用可能導致意外的型別強制轉換(例如:“挪威 Bug”)。同時,JSON 缺乏註釋支援,並且對尾隨逗號和帶引號的鍵有嚴格要求。

KEP-5295 引入了 KYAML,它試圖透過以下方式解決最重要的問題:

  • 始終用雙引號包裹值字串

  • 除非鍵可能產生歧義,否則不加引號

  • 始終使用 {} 表示對映(關聯陣列)

  • 始終使用 [] 表示列表

這聽起來很像 JSON,因為它確實如此!但與 JSON 不同,KYAML 支援註釋,允許尾隨逗號,並且不要求鍵必須加引號。

我們希望看到 KYAML 在 kubectl v1.34 中作為一種新的輸出格式被引入。與所有這些功能一樣,這些變化都不是 100% 確定的;敬請關注!

作為一種格式,KYAML 是並且將繼續是 **YAML 的嚴格子集**,確保任何相容的 YAML 解析器都可以解析 KYAML 文件。Kubernetes 不要求你提供專門格式化為 KYAML 的輸入,我們也沒有計劃改變這一點。

透過 HPA 可配置容忍度實現精細的自動擴縮容控制

KEP-4951 引入了一項新功能,允許使用者在每個 HPA 的基礎上配置自動擴縮容的容忍度,覆蓋了預設的叢集範圍 10% 容忍度設定,後者對於多樣化的工作負載來說通常過於粗糙。該增強功能在 HPA 的 spec.behavior.scaleUpspec.behavior.scaleDown 部分添加了一個可選的 tolerance 欄位,從而可以為擴容和縮容操作設定不同的容忍值,這尤其有價值,因為擴容的響應能力通常比縮容的速度更關鍵,以便處理流量激增。

此功能在 Kubernetes v1.33 中作為 Alpha 版本釋出,受 HPAConfigurableTolerance 特性門控控制,預計將在 v1.34 中升級為 Beta。這一改進有助於解決大規模部署中的擴縮容挑戰,例如在縮容時,10% 的容忍度可能意味著保留數百個不必要的 Pod 執行。使用新的、更靈活的方法將能夠針對響應式和保守的擴縮容行為進行特定於工作負載的最佳化。

想了解更多嗎?

新功能和棄用資訊也會在 Kubernetes 版本說明中公佈。我們將在 Kubernetes v1.34 的變更日誌中正式宣佈該版本的新內容。

Kubernetes v1.34 計劃於 2025 年 8 月 27 日,星期三釋出。敬請關注更新!

參與其中

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