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 中完全消失,go1.24 將於 2025 年上半年發布。 如果您依賴 SHA-1 憑證,請開始遷移它們。
請參閱 Kubernetes issue #125689,以更了解關於 SHA-1 支援消失的時間表、Kubernetes 版本計畫採用 go1.24 的時間,以及關於如何透過指標和稽核記錄偵測 SHA-1 憑證使用情況的更多詳細資訊。
Kubernetes 1.31 中的棄用和移除
棄用 Nodes 的 status.nodeInfo.kubeProxyVersion
欄位 (KEP 4004)
Nodes 的 .status.nodeInfo.kubeProxyVersion
欄位將在 Kubernetes v1.31 中棄用,並將在後續版本中移除。 棄用原因是此欄位的值不(也並非一直)準確。 此欄位由 kubelet 設定,kubelet 沒有關於 kube-proxy 版本或 kube-proxy 是否正在執行的可靠資訊。
DisableNodeKubeProxyVersion
功能閘道在 v1.31 中預設將設定為 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 列表包括
- FlowSchema 和 PriorityLevelConfiguration 的
flowcontrol.apiserver.k8s.io/v1beta3
API 版本將被移除。 為了準備此事,您可以編輯現有的 manifest 並重寫用戶端軟體以使用flowcontrol.apiserver.k8s.io/v1 API
版本,該版本自 v1.29 起可用。 所有現有的持久化物件都可以透過新的 API 存取。 flowcontrol.apiserver.k8s.io/v1beta3 中的重大變更包括 PriorityLevelConfigurationspec.limited.nominalConcurrencyShares
欄位僅在未指定時預設為 30,且明確值 0 不會變更為 30。
如需更多資訊,請參閱 API 棄用指南。
想了解更多資訊?
Kubernetes 發行說明會宣布棄用。 我們將在 Kubernetes v1.31 中正式宣布棄用,作為該版本的 CHANGELOG 的一部分。
您可以在以下版本的發行說明中查看待處理棄用的公告