本文已超過一年。較舊的文章可能包含過時的內容。請檢查頁面中的資訊自發布以來是否已變得不正確。
Kubernetes 移除與 v1.27 版本的主要變更
隨著 Kubernetes 的發展和成熟,為了專案的整體健康,功能可能會被棄用、移除或以更好的功能取代。根據 v1.27 版本流程中此時可用的資訊(該流程仍在進行中,並且可能會引入其他變更),本文識別並描述了 Kubernetes v1.27 版本的一些計畫變更。
關於 k8s.gcr.io 重定向到 registry.k8s.io 的注意事項
為了託管其容器映像,Kubernetes 專案使用社群擁有的映像登錄檔,稱為 registry.k8s.io。在 3 月 20 日,來自過時的 k8s.gcr.io 登錄檔的所有流量將被重定向到 registry.k8s.io。已棄用的 k8s.gcr.io 登錄檔最終將被逐步淘汰。
此變更意味著什麼?
如果您是子專案維護者,您必須更新您的 Manifest 和 Helm Chart 以使用新的登錄檔。
v1.27 Kubernetes 版本將不會發布到舊的登錄檔。
從 4 月起,v1.24、v1.25 和 v1.26 的修補程式版本將不再發布到舊的登錄檔。
我們有一篇 部落格文章,其中包含有關此變更的所有資訊,以及如果它影響到您,您該怎麼做。
Kubernetes API 移除和棄用流程
Kubernetes 專案有一個完善的文件化的 棄用政策,適用於功能。此政策規定,只有在有更新、穩定的相同 API 版本可用時,才能棄用穩定的 API,並且 API 針對每個穩定性級別都有最短的生命週期。已棄用的 API 已被標記為在未來的 Kubernetes 版本中移除,它將繼續運行直到移除(至少從棄用開始算起一年),但使用將導致顯示警告。已移除的 API 在目前版本中不再可用,此時您必須遷移到使用替換項。
一般可用 (GA) 或穩定的 API 版本可能會被標記為已棄用,但不得在 Kubernetes 的主要版本中移除。
Beta 或預發布 API 版本必須在棄用後支援 3 個版本。
Alpha 或實驗性 API 版本可能會在任何版本中移除,恕不另行棄用通知。
無論 API 是因為功能從 Beta 升級到穩定版本而被移除,還是因為該 API 根本沒有成功,所有移除都符合此棄用政策。每當 API 被移除時,遷移選項都會在文件中傳達。
API 移除以及 Kubernetes v1.27 的其他變更
從 CSIStorageCapacity
中移除 storage.k8s.io/v1beta1
CSIStorageCapacity API 支援透過 CSIStorageCapacity 物件公開目前可用的儲存容量,並增強了使用延遲綁定的 CSI 卷的 Pod 的排程。CSIStorageCapacity 的 storage.k8s.io/v1beta1
API 版本在 v1.24 中已棄用,並且在 v1.27 中將不再提供服務。
遷移 Manifest 和 API 用戶端以使用自 v1.24 以來可用的 storage.k8s.io/v1
API 版本。所有現有的持久化物件都可以透過新的 API 存取。
有關更多資訊,請參閱 Pod 排程的儲存容量約束 KEP。
Kubernetes v1.27 未移除任何其他 API;但是,還有其他幾個方面將被移除。請繼續閱讀以了解詳細資訊。
支援已棄用的 seccomp 註解
在 Kubernetes v1.19 中,seccomp(安全計算模式)支援已升級為正式發布 (GA)。此功能可用於透過限制 Pod(適用於所有容器)或單個容器的系統調用來提高工作負載安全性。
自 v1.19 以來,對 Alpha seccomp 註解 seccomp.security.alpha.kubernetes.io/pod
和 container.seccomp.security.alpha.kubernetes.io
的支援已被棄用,現在已完全移除。當建立具有 seccomp 註解的 Pod 時,seccomp 欄位不再自動填充。Pod 應改為使用對應的 Pod 或容器 securityContext.seccompProfile
欄位。
移除多個卷擴展的功能閘道
以下用於 卷擴展 GA 功能的功能閘道將被移除,並且不得再在 --feature-gates
標誌中引用
ExpandCSIVolumes
- 啟用擴展 CSI 卷。
ExpandInUsePersistentVolumes
- 啟用擴展使用中的 PVC。
ExpandPersistentVolumes
- 啟用擴展持久卷。
移除 --master-service-namespace
命令列引數
kube-apiserver 接受已棄用的命令列引數 --master-service-namespace
,該引數指定在何處建立名為 kubernetes
的 Service 以表示 API 伺服器。Kubernetes v1.27 將移除自 v1.26 版本以來已棄用的該引數。
移除 ControllerManagerLeaderMigration
功能閘道
領導者遷移 提供了一種機制,透過該機制,HA 叢集可以在升級複製的控制平面時,透過 kube-controller-manager
和 cloud-controller-manager
之間共用的資源鎖定,安全地遷移「雲端特定」控制器。
自 v1.24 起 GA 的 ControllerManagerLeaderMigration
功能已無條件啟用,並且對於 v1.27 版本,將移除功能閘道選項。如果您明確設定此功能閘道,則需要從命令列引數或組態檔中移除該功能閘道。
移除 --enable-taint-manager
命令列引數
kube-controller-manager 命令列引數 --enable-taint-manager
已棄用,並且將在 Kubernetes v1.27 中移除。它支援的功能 基於污點的驅逐 已預設啟用,並且在移除標誌後將繼續隱式啟用。
移除 --pod-eviction-timeout
命令列引數
已棄用的命令列引數 --pod-eviction-timeout
將從 kube-controller-manager 中移除。
移除 CSI Migration
功能閘道
CSI 遷移 程式允許從樹內卷插件遷移到樹外 CSI 驅動程式。CSI 遷移自 Kubernetes v1.16 起已正式發布,並且相關的 CSIMigration
功能閘道將在 v1.27 中移除。
移除 CSIInlineVolume
功能閘道
CSI 臨時卷 功能允許在 Pod 規範中直接指定 CSI 卷以用於臨時用例。它們可用於直接在 Pod 內部注入任意狀態,例如組態、密碼、身分、變數或類似資訊,方法是使用掛載的卷。此功能在 v1.25 中已升級為 GA。因此,CSIInlineVolume
功能閘道將在 v1.27 版本中移除。
移除 EphemeralContainers
功能閘道
臨時容器 在 v1.25 中已升級為 GA。這些是持續時間暫時的容器,在現有 Pod 的命名空間內執行。臨時容器通常由使用者啟動,以便觀察其他 Pod 和容器的狀態,以進行疑難排解和偵錯。對於 Kubernetes v1.27,對臨時容器的 API 支援已無條件啟用;將移除 EphemeralContainers
功能閘道。
移除 LocalStorageCapacityIsolation
功能閘道
本地臨時儲存容量隔離 功能在 v1.25 中已移至 GA。該功能提供對 Pod 之間本地臨時儲存容量隔離的支援,例如 emptyDir
卷,以便可以嚴格限制 Pod 對共用資源的消耗。如果本地臨時儲存的消耗超過設定的限制,kubelet 將驅逐 Pod。功能閘道 LocalStorageCapacityIsolation
將在 v1.27 版本中移除。
移除 NetworkPolicyEndPort
功能閘道
Kubernetes 的 v1.25 版本將 NetworkPolicy 中的 endPort
提升為 GA。支援 endPort
欄位的 NetworkPolicy 提供者可用於指定要應用 NetworkPolicy 的連接埠範圍。先前,每個 NetworkPolicy 只能針對單個連接埠。因此,NetworkPolicyEndPort
功能閘道將在此版本中移除。
請注意,endPort
欄位必須由 Network Policy 提供者支援。如果您的提供者不支援 endPort
,並且在 Network Policy 中指定了此欄位,則將建立 Network Policy,僅涵蓋連接埠欄位(單個連接埠)。
移除 StatefulSetMinReadySeconds
功能閘道
對於屬於 StatefulSet 的 Pod,只有當 Pod 在您在 minReadySeconds
中指定的期間內可用(且通過檢查)至少這麼長時間時,Kubernetes 才能將 Pod 標記為就緒。此功能在 Kubernetes v1.25 中已正式發布,並且 StatefulSetMinReadySeconds
功能閘道將鎖定為 true 並在 v1.27 版本中移除。
移除 IdentifyPodOS
功能閘道
您可以為 Pod 指定作業系統,並且自 v1.25 版本以來,對該功能的支援是穩定的。IdentifyPodOS
功能閘道將在 Kubernetes v1.27 中移除。
移除 DaemonSetUpdateSurge
功能閘道
Kubernetes 的 v1.25 版本也穩定了 DaemonSet Pod 的 Surge 支援,實施該支援是為了在推出期間最大限度地減少 DaemonSet 停機時間。DaemonSetUpdateSurge
功能閘道將在 Kubernetes v1.27 中移除。
移除 --container-runtime
命令列引數
kubelet 接受已棄用的命令列引數 --container-runtime
,並且在移除 dockershim 程式碼後,唯一有效的值將是 remote
。Kubernetes v1.27 將移除自 v1.24 版本以來已棄用的該引數。
展望未來
計畫在 Kubernetes v1.29 中移除的官方 API 移除列表 包括
- FlowSchema 和 PriorityLevelConfiguration 的
flowcontrol.apiserver.k8s.io/v1beta2
API 版本將在 v1.29 中不再提供服務。
想了解更多資訊嗎?
棄用會在 Kubernetes 版本說明中宣布。您可以在以下版本的版本說明中查看待處理棄用的公告
我們將正式宣布 Kubernetes v1.27 隨附的棄用,作為該版本的 CHANGELOG 的一部分。
有關棄用和移除流程的資訊,請查看官方 Kubernetes 棄用政策 文件。