本文發表於一年多前。舊文章可能包含過時內容。請檢查頁面中的資訊自發布以來是否已變得不正確。

Kubernetes 1.25 中的移除和重大變更

隨著 Kubernetes 的發展和成熟,為了專案的健康,一些特性可能會被棄用、移除或被改進的版本所取代。Kubernetes v1.25 包含了一些主要的變更和一個主要的移除。

Kubernetes API 移除和棄用流程

Kubernetes 專案對特性有明確的棄用策略文件。該策略規定,只有在同一 API 的更新、穩定版本可用時,才能棄用穩定的 API,並且 API 在每個穩定性級別都有最低的生命週期。被棄用的 API 是指已被標記為在未來 Kubernetes 版本中移除的 API;它將繼續工作直到被移除(從棄用開始至少一年),但使用時會顯示警告。被移除的 API 在當前版本中不再可用,此時你必須遷移到使用替代的 API。

  • 正式釋出(GA)或穩定的 API 版本可能會被標記為已棄用,但不能在 Kubernetes 的一個大版本中移除。
  • Beta 或預釋出 API 版本在棄用後必須再支援 3 個版本。
  • Alpha 或實驗性 API 版本可能在任何版本中被移除,而無需事先通知。

無論是由於特性從 Beta 階段升級到穩定階段而移除 API,還是因為該 API 未能成功,所有的移除都遵循此棄用策略。每當一個 API 被移除時,文件中都會提供遷移選項。

關於 PodSecurityPolicy 的說明

在 Kubernetes v1.25 中,繼 v1.21 版本中被棄用之後,我們將移除 PodSecurityPolicy 。PodSecurityPolicy 已經為我們服務了很長時間,但其複雜且常常令人困惑的用法使得變更勢在必行,而不幸的是這些變更是破壞性的。為了解決這個問題,它正在被移除,取而代之的是 Pod Security Admission,後者也在本次釋出中升級為穩定版。如果您目前依賴於 PodSecurityPolicy,請遵循遷移到 Pod Security Admission 的說明。

Kubernetes v1.25 的主要變更

除了移除 PodSecurityPolicy 之外,Kubernetes v1.25 還將包括幾個主要變更。

CSI 遷移

將樹內(in-tree)卷外掛遷移到樹外(out-of-tree)CSI 驅動程式的工作仍在繼續,核心的 CSI 遷移功能在 v1.25 中達到 GA 狀態。這是朝著完全移除樹內卷外掛邁出的重要一步。

儲存驅動程式的棄用和移除

幾個卷外掛正在被棄用或移除。

GlusterFS 將在 v1.25 中被棄用。雖然為其構建了一個 CSI 驅動程式,但並未得到維護。曾討論過遷移到相容的 CSI 驅動程式的可能性,但最終決定開始從樹內驅動程式中棄用 GlusterFS 外掛。Portworx 樹內卷外掛也在此版本中被棄用。Flocker、Quobyte 和 StorageOS 的樹內卷外掛正在被移除。

FlockerQuobyteStorageOS 的樹內卷外掛將在 v1.25 中被移除。這些外掛的使用者需要切換到等效的 CSI 驅動程式或其他儲存提供商。

vSphere 版本支援的變更

從 Kubernetes v1.25 開始,樹內 vSphere 卷驅動程式將不支援任何 7.0u2 之前的 vSphere 版本。一旦 Kubernetes v1.25 釋出,請檢視 v1.25 的詳細釋出說明,以獲取有關如何處理此問題的更多建議。

清理 IPTables 鏈的所有權

在 Linux 上,Kubernetes(通常)會建立 iptables 鏈以確保網路資料包到達。儘管這些鏈及其名稱一直是內部實現細節,但一些工具已經依賴於這種行為。將僅支援用於內部 Kubernetes 用例。從 v1.25 開始,Kubelet 將逐漸不再在 nat 表中建立以下 iptables 鏈:

  • KUBE-MARK-DROP
  • KUBE-MARK-MASQ
  • KUBE-POSTROUTING

這一變更將透過 IPTablesCleanup 特性門控分階段實施。雖然這並非正式的棄用,但一些終端使用者已經依賴於 kube-proxy 的特定內部行為。Kubernetes 專案總體上希望明確表示,不支援依賴這些內部細節,並且未來的實現將在此處改變其行為。

展望未來

計劃在 Kubernetes 1.26 中移除的 API 的官方列表是:

  • beta 版本的 FlowSchema 和 PriorityLevelConfiguration API (flowcontrol.apiserver.k8s.io/v1beta1)
  • beta 版本的 HorizontalPodAutoscaler API (autoscaling/v2beta2)

想了解更多嗎?

棄用資訊會在 Kubernetes 發行說明中公佈。你可以在以下版本的發行說明中看到待棄用功能的公告:

有關棄用和移除過程的資訊,請檢視官方的 Kubernetes 棄用策略文件。