本文發表於一年多前。舊文章可能包含過時內容。請檢查頁面中的資訊自發布以來是否已變得不正確。
Kubernetes v1.31 中的移除和重大變更
隨著 Kubernetes 的發展和成熟,為了專案的整體健康,一些特性可能會被棄用、移除或被更好的特性所取代。本文概述了 Kubernetes v1.31 版本的一些計劃變更,釋出團隊認為您應該瞭解這些變更,以便持續維護您的 Kubernetes 環境。以下列出的資訊基於 v1.31 版本的當前狀態,在實際釋出日期之前可能會發生變化。
Kubernetes API 移除和棄用流程
Kubernetes 專案為特性制定了有詳細文件記錄的棄用策略。該策略規定,只有在有更新的、穩定的 API 版本可用時,才能棄用穩定的 API,並且 API 在每個穩定性級別都有最低生命週期。被棄用的 API 已被標記為將在未來的 Kubernetes 版本中移除。在被移除之前,它將繼續執行(從棄用之日起至少一年),但使用時會顯示警告。被移除的 API 在當前版本中不再可用,因此你必須遷移到使用替代方案。
正式釋出(GA)或穩定的 API 版本可能會被標記為已棄用,但不能在 Kubernetes 的一個大版本中移除。
Beta 或預釋出 API 版本在棄用後必須支援 3 個版本。
Alpha 或實驗性 API 版本可能在任何版本中被移除,而無需事先通知。
無論一個 API 是因為某項功能從 Beta 階段畢業到穩定階段而被移除,還是因為該 API 未能成功,所有移除都遵循此棄用策略。每當一個 API 被移除時,我們都會在文件中傳達遷移選項。
關於 SHA-1 簽名支援的說明
在 go1.18(2022 年 3 月釋出)中,crypto/x509 庫開始拒絕使用 SHA-1 雜湊函式簽名的證書。雖然 SHA-1 已被證實不安全,且自 2015 年以來,公共信任的證書頒發機構已不再頒發 SHA-1 證書,但在 Kubernetes 的某些場景下,使用者提供的證書仍可能透過私有機構使用 SHA-1 雜湊函式簽名,並用於聚合 API 伺服器或 Webhook。如果你依賴於基於 SHA-1 的證書,你必須在環境中設定 GODEBUG=x509sha1=1
來明確選擇重新啟用其支援。
鑑於 Go 的 GODEBUG 相容性策略,x509sha1
GODEBUG 和對 SHA-1 證書的支援將在 go1.24 中完全移除,該版本將於 2025 年上半年釋出。如果你依賴 SHA-1 證書,請開始遷移。
請參閱 Kubernetes issue #125689,以更好地瞭解 SHA-1 支援移除的時間線、Kubernetes 版本計劃何時採用 go1.24,以及有關如何透過指標和審計日誌檢測 SHA-1 證書使用情況的更多詳細資訊。
Kubernetes 1.31 中的棄用和移除
棄用 Node 的 status.nodeInfo.kubeProxyVersion
欄位 (KEP 4004)
Node 的 .status.nodeInfo.kubeProxyVersion
欄位在 Kubernetes v1.31 中被棄用,並將在未來的版本中移除。它被棄用的原因是該欄位的值過去不準確,現在也不準確。該欄位由 kubelet 設定,而 kubelet 無法可靠地獲取 kube-proxy 版本資訊或 kube-proxy 是否正在執行。
在 v1.31 中,DisableNodeKubeProxyVersion
特性門控將預設設定為 true
,kubelet 將不再嘗試為其關聯的 Node 設定 .status.kubeProxyVersion
欄位。
移除所有樹內與雲提供商的整合
正如在上一篇文章中所強調的,最後剩餘的對雲提供商整合的樹內支援將在 v1.31 版本中被移除。這並不意味著你無法與雲提供商整合,但現在你必須使用推薦的方法,即透過外部整合。一些整合是 Kubernetes 專案的一部分,另一些則是第三方軟體。
這一里程碑標誌著所有云提供商的整合從 Kubernetes 核心中外部化過程的完成(KEP-2395),這一過程始於 Kubernetes v1.26。這一變化有助於 Kubernetes 更接近成為一個真正的供應商中立平臺。
有關雲提供商整合的更多詳細資訊,請閱讀我們的 v1.29 雲提供商整合特性部落格。有關樹內程式碼移除的更多背景資訊,我們邀請您檢視(v1.29 棄用部落格)。
後一篇部落格還為需要遷移到 v1.29 及更高版本的使用者提供了有用的資訊。
移除 kubelet 的 --keep-terminated-pod-volumes
命令列標誌
kubelet 的標誌 --keep-terminated-pod-volumes
在 2017 年已被棄用,將在 v1.31 版本中被移除。
你可以在拉取請求 #122082 中找到更多詳細資訊。
移除 CephFS 卷外掛
在此版本中,CephFS 卷外掛已被移除,cephfs
卷型別將無法使用。
建議你改用 CephFS CSI 驅動作為第三方儲存驅動。如果你在將叢集版本升級到 v1.31 之前正在使用 CephFS 卷外掛,則必須重新部署你的應用程式以使用新的驅動程式。
CephFS 卷外掛在 v1.28 中被正式標記為已棄用。
移除 Ceph RBD 卷外掛
v1.31 版本將移除 Ceph RBD 卷外掛及其 CSI 遷移支援,這使得 rbd
卷型別不再可用。
建議你在叢集中改用 RBD CSI 驅動。如果你在將叢集版本升級到 v1.31 之前正在使用 Ceph RBD 卷外掛,則必須重新部署你的應用程式以使用新的驅動程式。
Ceph RBD 卷外掛在 v1.28 中被正式標記為已棄用。
在 kube-scheduler 中棄用非 CSI 卷限制外掛
v1.31 版本將棄用所有非 CSI 卷限制排程器外掛,並會從預設外掛中移除一些已經棄用的外掛,包括
AzureDiskLimits
CinderLimits
EBSLimits
GCEPDLimits
建議你改用 NodeVolumeLimits
外掛,因為它能處理與被移除外掛相同的功能,因為這些卷型別已經遷移到 CSI。如果你在排程器配置中明確使用了這些已棄用的外掛,請用 NodeVolumeLimits
外掛替換它們。AzureDiskLimits
、CinderLimits
、EBSLimits
和 GCEPDLimits
外掛將在未來的版本中被移除。
這些外掛將從預設排程器外掛列表中移除,因為它們自 Kubernetes v1.14 起已被棄用。
展望未來
計劃在 Kubernetes v1.32 中移除的 API 官方列表包括
flowcontrol.apiserver.k8s.io/v1beta3
API 版本的 FlowSchema 和 PriorityLevelConfiguration 將被移除。為了為此做準備,你可以編輯現有的清單檔案並重寫客戶端軟體,以使用自 v1.29 起可用的flowcontrol.apiserver.k8s.io/v1
API 版本。所有現有的持久化物件都可以透過新的 API 訪問。flowcontrol.apiserver.k8s.io/v1beta3
中的顯著變化包括,PriorityLevelConfiguration 的spec.limited.nominalConcurrencyShares
欄位僅在未指定時預設為 30,顯式指定的值 0 不會被更改為 30。
更多資訊,請參考API 棄用指南。
想了解更多嗎?
Kubernetes 發行說明會公佈棄用資訊。我們將在 Kubernetes v1.31 的 CHANGELOG 中正式宣佈棄用資訊,作為該版本的一部分。
你可以在以下版本的發行說明中看到待棄用的公告: