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

Kubernetes 1.29 中的移除、棄用和重大變更

與每個版本一樣,Kubernetes v1.29 將引入一些功能的棄用和移除。我們持續釋出高質量版本的能力,證明了我們強大的開發週期和健康的社群。以下是 Kubernetes 1.29 版本中即將出現的一些棄用和移除。

Kubernetes API 移除和棄用流程

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

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

無論一個 API 是因為功能從 Beta 階段畢業到穩定階段而被移除,還是因為該 API 未獲成功,所有移除都遵循此棄用策略。每當一個 API 被移除時,文件中都會說明遷移選項。

關於 k8s.gcr.io 重定向到 registry.k8s.io 的說明

Kubernetes 專案使用一個名為 registry.k8s.io 的社群所屬映象倉庫來託管其容器映象。從去年三月開始,訪問舊的 k8s.gcr.io 倉庫的流量開始被重定向到 registry.k8s.io。已棄用的 k8s.gcr.io 倉庫最終將被逐步淘汰。有關此變更的更多詳細資訊或想了解你是否會受到影響,請閱讀 k8s.gcr.io 重定向到 registry.k8s.io - 你需要知道什麼

關於 Kubernetes 社群所屬軟體包倉庫的說明

2023 年早些時候,Kubernetes 專案引入了 pkgs.k8s.io,這是一個社群所屬的 Debian 和 RPM 軟體包軟體倉庫。這些社群所屬的倉庫取代了原先由 Google 擁有的舊倉庫(apt.kubernetes.ioyum.kubernetes.io)。2023 年 9 月 13 日,這些舊倉庫被正式棄用並凍結了其內容。

有關此變更的更多資訊或想了解你是否會受到影響,請閱讀棄用公告

Kubernetes v1.29 的棄用和移除

請參閱官方的 API 移除列表,瞭解 Kubernetes v1.29 中所有計劃的棄用項的完整列表。

移除與雲提供商的樹內整合(KEP-2395

對於 Kubernetes v1.29,特性門控 DisableCloudProvidersDisableKubeletCloudCredentialProviders 都將預設設定為 true。此變更要求當前使用樹內雲提供商整合(Azure、GCE 或 vSphere)的使用者啟用外部雲控制器管理器,或者透過將相關特性門控設定為 false 來選擇使用舊的整合方式。

啟用外部雲控制器管理器意味著你必須在叢集的控制平面內執行一個合適的雲控制器管理器;這還需要為 kubelet(在每個相關節點上)以及整個控制平面(kube-apiserver 和 kube-controller-manager)設定命令列引數 --cloud-provider=external

有關如何啟用和執行外部雲控制器管理器的更多資訊,請閱讀雲控制器管理器管理遷移副本控制平面以使用雲控制器管理器

有關雲控制器管理器的一般資訊,請參閱 Kubernetes 文件中的雲控制器管理器

移除 v1beta2 流控制 API 組

在 Kubernetes v1.29 中,FlowSchema 和 PriorityLevelConfiguration 的 flowcontrol.apiserver.k8s.io/v1beta2 API 版本將不再被提供

為準備此變更,你可以編輯現有的清單檔案並重寫客戶端軟體,以使用自 v1.26 起可用的 flowcontrol.apiserver.k8s.io/v1beta3 API 版本。所有現有的持久化物件都可以透過新的 API 訪問。flowcontrol.apiserver.k8s.io/v1beta3 中的顯著變化包括 PriorityLevelConfiguration 的 spec.limited.assuredConcurrencyShares 欄位已重新命名為 spec.limited.nominalConcurrencyShares

棄用 Node 的 status.nodeInfo.kubeProxyVersion 欄位

Node 物件的 .status.kubeProxyVersion 欄位將在 v1.29 中被標記為棄用,為在未來版本中移除做準備。該欄位不準確,由 kubelet 設定,而 kubelet 實際上並不知道 kube-proxy 的版本,甚至不知道 kube-proxy 是否在執行。

想了解更多嗎?

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

我們將在 Kubernetes v1.29 的變更日誌中正式宣佈該版本帶來的棄用資訊。

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