Kubernetes 1.26 中的刪除、棄用和主要更改

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)

https://kubernetes.io/docs/concepts/architecture/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é)點:

https://github.com/kubernetes/kubernetes/pull/110618

這意味著 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:

https://kubernetes.io/releases/version-skew-policy/#kubelet

即使您將控制平面升級到 Kubernetes 的 1.26 次要版本,它仍然與v1alpha2 CRI 支持兼容。

除了容器運行時本身,還有像 stargz-snapshotter:

https://github.com/containerd/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)商特定身份驗證:

https://github.com/kubernetes/kubernetes/pull/112341

將從client-gokubectl代碼中移除,現(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:

https://github.com/Azure/kubelogin#readme

和 Google Cloud 的其他指南:

https://cloud.google.com/blog/products/containers-kubernetes/kubectl-auth-changes-in-gke

刪除kube-proxy的 userspace 模式

userspace代理模式已被棄用一年多,在 Linux 或 Windows 上不再受支持:

https://github.com/kubernetes/kubernetes/pull/112133

并將在此版本中刪除。用戶應(yīng)該在 Linux 上使用iptablesipvs,或者在 windows 上使用kernelspace。使用--mode userspace將失敗。

移除樹內(nèi) OpenStack 云提供商

Kubernetes 正在從用于存儲集成的樹內(nèi)代碼轉(zhuǎn)向容器存儲接口 (CSI)。作為其中的一部分,Kubernetes v1.26 將刪除已棄用的 OpenStack (cinder卷類型)樹內(nèi)存儲集成。您應(yīng)該遷移到外部云提供商和 CSI 驅(qū)動程序:

https://github.com/kubernetes/cloud-provider-openstack

有關(guān)詳細信息,請訪問 Cinder in-tree 到 CSI 驅(qū)動程序遷移:

https://github.com/kubernetes/enhancements/issues/1489

刪除 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)志

作為包容性命名計劃,實施工作的一部分:

https://www.cncf.io/announcements/2021/10/13/inclusive-naming-initiative-announces-new-community-resources-for-a-more-inclusive-future/

--prune-whitelist標(biāo)志將被棄用,并替換為--prune-allowlist. 強烈建議使用此標(biāo)志的用戶,在最終刪除該標(biāo)志之前,在未來版本中進行必要的更改。

https://github.com/kubernetes/kubernetes/pull/113116

刪除動態(tài) kubelet 配置

動態(tài) kubelet 配置允許通過 Kubernetes API 推出新的 kubelet 配置:

https://github.com/kubernetes/enhancements/tree/2cd758cc6ab617a93f578b40e97728261ab886ed/keps/sig-node/281-dynamic-kubelet-configuration

即使在實時集群中也是如此。集群操作員可以通過指定包含 kubelet 應(yīng)該使用的配置數(shù)據(jù)的 ConfigMap 來重新配置節(jié)點上的 kubelet。動態(tài) kubelet 配置在 v1.24 中從 kubelet 中移除,并將在 v1.26 版本中從 API Server 中移除。

https://github.com/kubernetes/kubernetes/pull/112643

kube-apiserver命令行參數(shù)的棄用

kube-apiserver 的--master-service-namespace命令行參數(shù)沒有任何效果,并且已經(jīng)被非正式棄用:

https://github.com/kubernetes/kubernetes/pull/38186

該命令行參數(shù)將在 v1.26 中正式標(biāo)記為已棄用,以準(zhǔn)備在未來的版本中將其刪除。Kubernetes 項目預(yù)計此次棄用和移除不會產(chǎn)生任何影響。

kubectl run命令行參數(shù)的棄用

kubectl run的子命令的幾個未使用的選項參數(shù)將被標(biāo)記為 deprecated,包括:

https://github.com/kubernetes/kubernetes/pull/112261

  • --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ù)。

https://github.com/kubernetes/kubernetes/pull/112120

這些命令行參數(shù)已被棄用。有關(guān)詳細信息,請參閱棄用 Kubernetes 組件中的 klog 特定標(biāo)志:

https://github.com/kubernetes/enhancements/tree/3cb66bd0a1ef973ebcc974f935f0ac5cba9db4b2/keps/sig-instrumentation/2845-deprecate-klog-specific-flags-in-k8s-components

譯自

作者:Frederico Mu?oz (SAS)
原文:https://kubernetes.io/blog/2022/11/18/upcoming-changes-in-kubernetes-1-26/

說明

請關(guān)注 危 ? 工中號【進擊云原生】,更有 free 資源供您學(xué)習(xí)

本文由mdnice多平臺發(fā)布

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容