Kubernetes 1.26 中的刪除、棄用和主要更改
變化是 Kubernetes 生命周期不可或缺的一部分:隨著 Kubernetes 的成長和成熟,功能可能會被棄用、刪除或替換為項目健康的改進。對于 Kubernetes v1.26,有幾個計劃:本文根據(jù) v1.26 發(fā)布過程中這個周期中期點可用的信息確定并描述了其中的一部分,該過程仍在進行中,并且可能會引入其他更改。
Kubernetes API 移除和棄用流程
Kubernetes 項目有一個有據(jù)可查的功能棄用政策。
https://kubernetes.io/docs/reference/using-api/deprecation-policy/
此政策規(guī)定,只有當(dāng)同一 API 的更新、穩(wěn)定版本可用時,穩(wěn)定的 API 才可能被棄用,并且 API 具有每個穩(wěn)定性級別的最短生命周期。已棄用的 API 已被標(biāo)記為在未來的 Kubernetes 版本中刪除;它將繼續(xù)運行直到被刪除(從棄用起至少一年),但使用會導(dǎo)致顯示警告。已刪除的 API 在當(dāng)前版本中不再可用,此時您必須遷移到使用替換 API。
- 一般可用 (GA) 或穩(wěn)定的 API 版本可能會標(biāo)記為已棄用,但不得在 Kubernetes 的主要版本中刪除。
- 棄用后的 3 個版本必須支持 Beta 或預(yù)發(fā)布 API 版本。
- Alpha 或?qū)嶒炐?API 版本可能會在任何版本中刪除,恕不另行通知。
無論 API 是由于功能從測試版升級到穩(wěn)定版而被刪除,還是因為該 API 根本沒有成功,所有刪除都符合此棄用政策。每當(dāng)刪除 API 時,都會在文檔中傳達遷移選項。
刪除對 CRI v1alpha2 API 和 containerd 1.5 的支持
在 1.24 版本中采用了 Container Runtime Interface (CRI)
和 移除 dockershim 之后,CRI 成為了 Kubernetes 與不同容器運行時交互的受支持和文檔化的方式。每個 kubelet 與該節(jié)點上的容器運行時協(xié)商使用哪個版本的 CRI。
Kubernetes 項目推薦使用 CRI 版本 v1; 在 Kubernetes 版本 1.25 中,kubelet 還可以協(xié)商使用 CRI 版本 v1alpha2(在添加對穩(wěn)定 v1 接口的支持的同時,已經(jīng)不再推薦使用該版本)。
Kubernetes v1.26 將不支持 CRI v1alpha2。如果容器運行時不支持 CRI v1,則此次移除將導(dǎo)致 kubelet 不注冊節(jié)點:
這意味著 Kubernetes 1.26 將不支持 containerd 次要版本 1.5 及更早的版本;如果您使用 containerd,則需要先升級到 containerd 1.6.0 或更高版本,然后再將該節(jié)點升級到 Kubernetes v1.26。其他僅支持v1alpha2的容器運行時也受到同樣的影響:如果這影響到您,您應(yīng)該聯(lián)系容器運行時供應(yīng)商尋求建議或查看他們的網(wǎng)站以獲取有關(guān)如何改進的更多說明。
如果您想從 v1.26 功能中獲益并仍然使用較舊的容器運行時,您可以運行較舊的 kubelet。kubelet 支持的傾斜允許您運行 v1.25 kubelet:
即使您將控制平面升級到 Kubernetes 的 1.26 次要版本,它仍然與v1alpha2 CRI 支持兼容。
除了容器運行時本身,還有像 stargz-snapshotter:
這樣的工具充當(dāng) kubelet 和容器運行時之間的代理,這些工具也可能受到影響。
Kubernetes v1.26 中的棄用和刪除
除上述內(nèi)容外,Kubernetes v1.26 的目標(biāo)是包括一些額外的刪除和棄用。
移除v1beta1流量控制 API 組
FlowSchema 和 PriorityLevelConfiguration 的 flowcontrol.apiserver.k8s.io/v1beta1 API 版本,將不再在 v1.26 中提供:
https://kubernetes.io/docs/reference/using-api/deprecation-guide/#flowcontrol-resources-v126
用戶應(yīng)遷移清單和 API 客戶端以使用自 v1.23 起可用的 API 版本:flowcontrol.apiserver.k8s.io/v1beta2
刪除 v2beta2 HorizontalPodAutoscaler API
HorizontalPodAutoscaler autoscaling/v2beta2API 版本將不再在 v1.26 中提供服務(wù):
https://kubernetes.io/docs/reference/using-api/deprecation-guide/#horizontalpodautoscaler-v126
用戶應(yīng)遷移清單和 API 客戶端以使用自 v1.23 起可用的 API 版本:autoscaling/v2
刪除樹內(nèi)憑證管理代碼
在這個即將發(fā)布的版本中,作為 Kubernetes 一部分的舊供應(yīng)商特定身份驗證:
將從client-go和 kubectl代碼中移除,現(xiàn)有機制支持對兩個特定云提供商的身份驗證:Azure 和 Google Cloud。取而代之的是,Kubernetes 已經(jīng)提供了供應(yīng)商中立的身份驗證插件機制:
https://kubernetes.io/docs/reference/access-authn-authz/authentication/#client-go-credential-plugins
您可以在 v1.26 版本發(fā)布之前立即切換。如果您受到影響,可以找到有關(guān)如何繼續(xù)使用 Azure:
和 Google Cloud 的其他指南:
https://cloud.google.com/blog/products/containers-kubernetes/kubectl-auth-changes-in-gke
刪除kube-proxy的 userspace 模式
userspace代理模式已被棄用一年多,在 Linux 或 Windows 上不再受支持:
并將在此版本中刪除。用戶應(yīng)該在 Linux 上使用iptables或ipvs,或者在 windows 上使用kernelspace。使用--mode userspace將失敗。
移除樹內(nèi) OpenStack 云提供商
Kubernetes 正在從用于存儲集成的樹內(nèi)代碼轉(zhuǎn)向容器存儲接口 (CSI)。作為其中的一部分,Kubernetes v1.26 將刪除已棄用的 OpenStack (cinder卷類型)樹內(nèi)存儲集成。您應(yīng)該遷移到外部云提供商和 CSI 驅(qū)動程序:
有關(guān)詳細信息,請訪問 Cinder in-tree 到 CSI 驅(qū)動程序遷移:
刪除 GlusterFS in-tree 驅(qū)動程序
樹內(nèi) GlusterFS 驅(qū)動程序 在 v1.25 中已棄用,并將從 Kubernetes v1.26 中刪除。
https://kubernetes.io/blog/2022/08/23/kubernetes-v1-25-release/#deprecations-and-removals
棄用非包容性kubectl標(biāo)志
作為包容性命名計劃,實施工作的一部分:
該--prune-whitelist標(biāo)志將被棄用,并替換為--prune-allowlist. 強烈建議使用此標(biāo)志的用戶,在最終刪除該標(biāo)志之前,在未來版本中進行必要的更改。
刪除動態(tài) kubelet 配置
動態(tài) kubelet 配置允許通過 Kubernetes API 推出新的 kubelet 配置:
即使在實時集群中也是如此。集群操作員可以通過指定包含 kubelet 應(yīng)該使用的配置數(shù)據(jù)的 ConfigMap 來重新配置節(jié)點上的 kubelet。動態(tài) kubelet 配置在 v1.24 中從 kubelet 中移除,并將在 v1.26 版本中從 API Server 中移除。
kube-apiserver命令行參數(shù)的棄用
kube-apiserver 的--master-service-namespace命令行參數(shù)沒有任何效果,并且已經(jīng)被非正式棄用:
該命令行參數(shù)將在 v1.26 中正式標(biāo)記為已棄用,以準(zhǔn)備在未來的版本中將其刪除。Kubernetes 項目預(yù)計此次棄用和移除不會產(chǎn)生任何影響。
kubectl run命令行參數(shù)的棄用
kubectl run的子命令的幾個未使用的選項參數(shù)將被標(biāo)記為 deprecated,包括:
--cascade--filename--force--grace-period--kustomize--recursive--timeout--wait
這些參數(shù)已被忽略,因此預(yù)計不會產(chǎn)生任何影響:顯式棄用會設(shè)置一條警告消息并準(zhǔn)備在未來版本中刪除這些參數(shù)。
刪除與日志記錄相關(guān)的遺留命令行參數(shù)
Kubernetes v1.26 將刪除一些與日志記錄相關(guān)的命令行參數(shù)。
這些命令行參數(shù)已被棄用。有關(guān)詳細信息,請參閱棄用 Kubernetes 組件中的 klog 特定標(biāo)志:
譯自
作者:Frederico Mu?oz (SAS)
原文:https://kubernetes.io/blog/2022/11/18/upcoming-changes-in-kubernetes-1-26/
說明
請關(guān)注 危 ? 工中號【進擊云原生】,更有 free 資源供您學(xué)習(xí)
本文由mdnice多平臺發(fā)布