本文已超過一年。較舊的文章可能包含過時的內容。請檢查頁面中的資訊自發布以來是否已變得不正確。
Kubernetes 1.24 中的移除和棄用
隨著 Kubernetes 的發展,功能和 API 會定期重新檢視和移除。新功能可能會提供解決現有問題的替代或改進方法,促使團隊移除舊方法。
我們希望確保您了解 Kubernetes 1.24 版本即將發生的變更。此版本將棄用多個 (beta) API,改用相同 API 的穩定版本。Kubernetes 1.24 版本即將發生的主要變更是 移除 Dockershim。以下將討論此問題,並將在發布時更深入地探討。如需搶先了解 Kubernetes 1.24 即將發生的變更,請查看進行中的 CHANGELOG。
關於 Dockershim 的注意事項
可以肯定地說,隨著 Kubernetes 1.24 版本的發布,最受關注的移除是 Dockershim。Dockershim 已在 v1.20 中棄用。如 Kubernetes 1.20 更新日誌 中所述:「kubelet 中的 Docker 支援現已棄用,並將在未來版本中移除。kubelet 使用名為「dockershim」的模組,該模組實作對 Docker 的 CRI 支援,並且在 Kubernetes 社群中已出現維護問題。」隨著即將發布的 Kubernetes 1.24 版本,Dockershim 最終將被移除。
在文章 別驚慌:Kubernetes 和 Docker 中,作者簡潔地捕捉到此變更的影響,並鼓勵使用者保持冷靜
底層執行階段的 Docker 正在被棄用,轉而使用為 Kubernetes 建立的容器執行階段介面 (CRI) 的執行階段。Docker 生產的映像檔將繼續在您的叢集中與所有執行階段一起運作,就像它們一直以來所做的那樣。
已建立多個指南,其中包含有關從 dockershim 移轉到與 Kubernetes 直接相容的容器執行階段的實用資訊。您可以在 Kubernetes 文件中的 從 dockershim 移轉 頁面中找到它們。
如需更多關於 Kubernetes 為何要從 dockershim 轉移的資訊,請查看這個恰如其分的名稱:Kubernetes 正在從 Dockershim 轉移 和 更新的 dockershim 移除常見問題。
查看 您的叢集是否已準備好迎接 v1.24? 文章,以了解如何確保您的叢集在從 v1.23 升級到 v1.24 後繼續運作。
Kubernetes API 移除和棄用程序
Kubernetes 包含大量隨著時間演進的元件。在某些情況下,這種演進會導致 API、標誌或整個功能被移除。為了防止使用者面臨重大變更,Kubernetes 貢獻者採用了功能 棄用政策。此政策確保只有在相同 API 的較新穩定版本可用時,才能棄用穩定 API,並且 API 具有以下穩定性層級指示的最低生命週期
- 一般可用 (GA) 或穩定 API 版本可能會被標記為已棄用,但不得在 Kubernetes 的主要版本中移除。
- Beta 或預發布 API 版本在棄用後必須支援 3 個版本。
- Alpha 或實驗性 API 版本可能會在任何版本中移除,恕不另行發布棄用通知。
無論 API 是因為 beta 功能升級到穩定版而被移除,還是因為該 API 未被證明是成功的而被移除,移除都遵循相同的棄用政策。每當 API 被移除時,Kubernetes 將繼續確保遷移選項已記錄在案。
已棄用的 API 是指已標記為在未來 Kubernetes 版本中移除的 API。已移除的 API 是指在棄用後,目前受支援的 Kubernetes 版本中不再可用的 API。這些移除已被較新、穩定/一般可用 (GA) API 取代。
Kubernetes 1.24 的 API 移除、棄用和其他變更
- 動態 kubelet 組態:
DynamicKubeletConfig
用於啟用 kubelet 的動態組態。DynamicKubeletConfig
標誌已在 Kubernetes 1.22 中棄用。在 v1.24 中,此功能閘道將從 kubelet 中移除。請參閱 「動態 kubelet 組態已移除」KEP 以取得更多資訊。 - 動態日誌清理:實驗性動態日誌清理功能已棄用,並將在 v1.24 中移除。此功能引入了一個日誌篩選器,可以應用於所有 Kubernetes 系統元件日誌,以防止各種類型的敏感資訊透過日誌洩漏。請參閱 KEP-1753:Kubernetes 系統元件日誌清理 以取得更多資訊,並參閱 替代方法。
- 從 kubelet 移除 Dockershim:Docker 的容器執行階段介面 (CRI) (即 Dockershim) 目前是 kubelet 程式碼庫中的內建容器執行階段。它已在 v1.20 中棄用。從 v1.24 開始,kubelet 將不再具有 dockershim。請查看此部落格,了解 您需要做什麼才能準備好迎接 v1.24。
- 用於 Pod 排程的儲存容量追蹤:CSIStorageCapacity API 支援透過 CSIStorageCapacity 物件公開目前可用的儲存容量,並增強使用具有延遲綁定的 CSI 磁碟區的 Pod 的排程。在 v1.24 中,CSIStorageCapacity API 將會穩定。API 升級到穩定版會啟動 v1beta1 CSIStorageCapacity API 的棄用。請參閱 用於 Pod 排程 KEP 的儲存容量限制 以取得更多資訊。
master
標籤不再存在於 kubeadm 控制平面節點上。對於新的叢集,標籤 'node-role.kubernetes.io/master' 將不再新增至控制平面節點,只會新增標籤 'node-role.kubernetes.io/control-plane'。如需更多資訊,請參閱 KEP-2067:重新命名 kubeadm "master" 標籤和污點。- VolumeSnapshot v1beta1 CRD 將被移除。Kubernetes 的磁碟區快照和還原功能以及 容器儲存介面 (CSI),它提供標準化的 API 設計 (CRD) 並為 CSI 磁碟區驅動程式新增 PV 快照/還原支援,已在 v1.20 中移至 GA。VolumeSnapshot v1beta1 已在 v1.20 中棄用,並將在 v1.24 版本中不再支援。請參閱 KEP-177:CSI 快照 和 磁碟區快照 GA 部落格 部落格文章以取得更多資訊。
該怎麼辦
Dockershim 移除
如前所述,有幾個關於 從 dockershim 移轉 的指南。您可以從 找出節點上使用的容器執行階段 開始。如果您的節點使用 dockershim,則可能還有其他 Docker Engine 依存性,例如 Pod 或執行 Docker 命令的第三方工具,或 Docker 組態檔中的私有登錄檔。您可以按照 檢查 Dockershim 移除是否會影響您 指南來檢閱可能的 Docker Engine 依存性。在升級到 v1.24 之前,您可以決定繼續使用 Docker Engine 並 將 Docker Engine 節點從 dockershim 移轉到 cri-dockerd,或移轉到與 CRI 相容的執行階段。以下是 將節點上的容器執行階段從 Docker Engine 變更為 containerd 的指南。
kubectl convert
kubectl convert
kubectl
的外掛程式可能有助於解決從已棄用 API 移轉的問題。此外掛程式有助於在不同 API 版本之間轉換資訊清單,例如,從已棄用 API 版本轉換為未棄用 API 版本。有關 API 移轉程序的更多一般資訊,請參閱 已棄用 API 移轉指南。請按照 安裝 kubectl convert
外掛程式 文件下載並安裝 kubectl-convert
二進位檔。
展望未來
計劃在今年稍後發布的 Kubernetes 1.25 和 1.26 版本將停止提供多個目前穩定 Kubernetes API 的 beta 版本。v1.25 版本也將移除 PodSecurityPolicy,該政策已在 Kubernetes 1.21 中棄用,並且不會升級到穩定版。請參閱 PodSecurityPolicy 棄用:過去、現在和未來 以取得更多資訊。
Kubernetes 1.25 計劃移除的 API 清單 官方
- beta CronJob API (batch/v1beta1)
- beta EndpointSlice API (discovery.k8s.io/v1beta1)
- beta Event API (events.k8s.io/v1beta1)
- beta HorizontalPodAutoscaler API (autoscaling/v2beta1)
- beta PodDisruptionBudget API (policy/v1beta1)
- beta PodSecurityPolicy API (policy/v1beta1)
- beta RuntimeClass API (node.k8s.io/v1beta1)
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 官方 棄用政策 文件。