本文發表於一年多前。舊文章可能包含過時內容。請檢查頁面中的資訊自發布以來是否已變得不正確。
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 的樹內卷外掛正在被移除。
Flocker、Quobyte 和 StorageOS 的樹內卷外掛將在 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 1.21
- Kubernetes 1.22
- Kubernetes 1.23
- Kubernetes 1.24
- 我們將在 Kubernetes 1.25 的 CHANGELOG 中正式宣佈該版本附帶的棄用項。
有關棄用和移除過程的資訊,請檢視官方的 Kubernetes 棄用策略文件。