Kubernetes v1.30 搶先看

快速一覽:Kubernetes v1.30 中的令人興奮的變更

新的一年和新的 Kubernetes 版本。我們正處於發布週期的中途,並且在 v1.30 中即將推出許多有趣且令人興奮的增強功能。從全新的 Alpha 功能,到已建立的 Stable 功能,再到期待已久的改進,此版本都有一些值得大家關注的地方!

為了讓您在正式發布之前先睹為快,以下是我們對此週期中最感興趣的增強功能的搶先看!

Kubernetes v1.30 的重大變更

動態資源分配的結構化參數 (KEP-4381)

動態資源分配已在 v1.26 中作為 Alpha 功能新增至 Kubernetes。它定義了傳統 device-plugin API 的替代方案,用於請求存取第三方資源。依設計,動態資源分配使用對核心 Kubernetes 完全不透明的資源參數。這種方法對叢集自動擴展器 (CA) 或任何需要為 Pod 群組(例如,任務排程器)做出決策的更高等級控制器構成問題。它無法模擬隨著時間推移分配或解除分配宣告的效果。只有第三方 DRA 驅動程式具有執行此操作的可用資訊。

動態資源分配的結構化參數是對原始實作的擴展,它透過建立一個框架來支援使這些宣告參數更透明來解決此問題。驅動程式可以管理資源並使用 Kubernetes 預先定義的特定「結構化模型」來描述它們,而不是自行處理所有宣告參數的語意。這將允許感知此「結構化模型」的組件對這些資源做出決策,而無需將它們外包給某些第三方控制器。例如,排程器可以快速分配宣告,而無需與動態資源分配驅動程式來回通訊。此版本完成的工作重點是定義啟用不同「結構化模型」和實作「具名資源」模型所需的框架。與傳統 device plugin API 相比,此模型允許列出個別資源實例,並新增了透過屬性個別選取這些實例的能力。

節點記憶體交換空間支援 (KEP-2400)

在 Kubernetes v1.30 中,Linux 節點上的記憶體交換空間支援在運作方式上發生了重大變更 - 強調改進系統穩定性。在之前的 Kubernetes 版本中,NodeSwap 功能閘道預設為停用,而當啟用時,它使用 UnlimitedSwap 行為作為預設行為。為了實現更好的穩定性,UnlimitedSwap 行為(可能會損害節點穩定性)將在 v1.30 中移除。

更新後的、仍在 Beta 階段的 Linux 節點交換空間支援預設將可用。但是,預設行為是將節點設定為 NoSwap(而非 UnlimitedSwap)模式。在 NoSwap 模式下,kubelet 支援在交換空間為活動狀態的節點上執行,但 Pod 不使用任何分頁檔。您仍然需要為 kubelet 設定 --fail-swap-on=false 才能在該節點上執行。但是,最大的變更是另一個模式:LimitedSwap。在此模式下,kubelet 實際上會使用該節點上的分頁檔,並允許 Pod 將其部分虛擬記憶體分頁輸出。容器(及其父 Pod)無法存取超出其記憶體限制的交換空間,但如果可用,系統仍然可以使用交換空間。

Kubernetes 的節點特別興趣小組 (SIG Node) 也將更新文件,以協助您根據最終使用者、貢獻者和更廣泛的 Kubernetes 社群的回饋,了解如何使用修訂後的實作。

閱讀之前的部落格文章節點交換空間文件,以取得 Kubernetes 中 Linux 節點交換空間支援的更多詳細資訊。

在 Pod 中支援使用者命名空間 (KEP-127)

使用者命名空間是僅限 Linux 的功能,可更好地隔離 Pod,以防止或緩解多個被評為高/危急的 CVE,包括 CVE-2024-21626,該漏洞於 2024 年 1 月發布。在 Kubernetes 1.30 中,對使用者命名空間的支援正在遷移到 Beta 版,現在支援具有和不具有磁碟區、自訂 UID/GID 範圍等的 Pod!

結構化授權組態 (KEP-3221)

結構化授權組態的支援正在移至 Beta 版,並且預設將啟用。此功能可使用定義完善的參數建立具有多個 Webhook 的授權鏈,這些 Webhook 以特定順序驗證請求,並允許細粒度控制 - 例如,明確拒絕失敗。組態檔方法甚至允許您指定 CEL 規則,以便在將請求分派到 Webhook 之前預先篩選請求,從而協助您防止不必要的調用。當組態檔被修改時,API 伺服器也會自動重新載入授權器鏈。

您必須使用 --authorization-config 命令列引數指定該授權組態的路徑。如果您想繼續使用命令列標誌而不是組態檔,這些標誌將繼續按原樣運作。若要存取新的授權 Webhook 功能,例如多個 Webhook、失敗策略和預先篩選規則,請切換為將選項放入 --authorization-config 檔案中。從 Kubernetes 1.30 開始,組態檔格式為 Beta 級別,並且僅需要指定 --authorization-config,因為功能閘道預設為啟用狀態。授權文件中提供了包含所有可能值的範例組態。如需更多詳細資訊,請閱讀授權文件

基於容器資源的 Pod 自動擴展 (KEP-1610)

基於 ContainerResource 指標的水平 Pod 自動擴展將在 v1.30 中升級為 Stable。HorizontalPodAutoscaler 的這種新行為允許您根據個別容器的資源使用量(而不是 Pod 的彙總資源使用量)來配置自動擴展。請參閱我們之前的文章以取得更多詳細資訊,或閱讀容器資源指標

用於准入控制的 CEL (KEP-3488)

在 Kubernetes 中整合通用表達式語言 (CEL) 以進行准入控制,引入了一種更動態且更具表現力的方式來評估准入請求。此功能允許透過 Kubernetes API 直接定義和強制執行複雜、細粒度的策略,從而增強安全性和治理能力,而不會損害效能或彈性。

CEL 新增至 Kubernetes 准入控制,使叢集管理員能夠制定複雜的規則,這些規則可以根據叢集的期望狀態和策略來評估 API 請求的內容,而無需求助於基於 Webhook 的存取控制器。這種控制程度對於維護叢集操作的完整性、安全性和效率至關重要,使 Kubernetes 環境更強大且更能適應各種使用案例和需求。如需有關使用 CEL 進行准入控制的更多資訊,請參閱 ValidatingAdmissionPolicy 的 API 文件

我們希望您和我們一樣對此版本感到興奮。請密切關注幾週後的官方發布部落格,以了解更多重點!