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