# Kubernetes 1.29 前瞻:弃用、移除和重大变更 **译者:** [Michael Yao](https://github.com/windsonsea) (DaoCloud) Kubernetes v1.29 计划将于 12 月初发布,这将是 2023 年的最后一个版本。 就像每次发布一样,Kubernetes v1.29 也将弃用和移除一些特性。 持续高质量发布的执行能力是开发周期稳健和社区健康的良好见证。 下文说明了即将发布的 Kubernetes 1.29 中的一些弃用和移除事项。 ## Kubernetes API 移除和弃用流程 Kubernetes 项目对特性有一个文档完备的弃用策略。此策略规定,只有当较新的、稳定的相同 API 可用时, 原有的稳定 API 才可以被弃用,每个稳定级别的 API 都有一个最短的生命周期。 弃用的 API 指的是已标记为将在后续发行某个 Kubernetes 版本时移除的 API; 移除之前该 API 将继续发挥作用(从弃用起至少一年时间),但使用时会显示一条警告。 被移除的 API 将在当前版本中不再可用,此时你必须转为使用替代的 API。 - 正式发布(GA)或稳定的 API 版本可能被标记为已弃用,但只有在 Kubernetes 大版本更新时才会被移除。 - 测试版(Beta)或预发布 API 版本在弃用后必须在后续 3 个版本中继续支持。 - Alpha 或实验性 API 版本可以在任何版本中被移除,不另行通知。 无论一个 API 是因为某特性从 Beta 进阶至稳定阶段而被移除,还是因为该 API 根本没有成功, 所有移除均遵从上述弃用策略。无论何时移除一个 API,文档中都会列出迁移选项。 ## k8s.gcr.io 重定向到 registry.k8s.io 相关说明 Kubernetes 项目为了托管其容器镜像,使用社区自治的一个名为 registry.k8s.io 的镜像仓库。 从最近的 3 月份起,所有流向 k8s.gcr.io 旧仓库的流量开始被重定向到 registry.k8s.io。 已弃用的 k8s.gcr.io 仓库最终将被淘汰。有关这一变更的细节或若想查看你是否受到影响,参阅 [k8s.gcr.io 重定向到 registry.k8s.io - 用户须知](https://kubernetes.io/zh-cn/blog/2023/03/10/image-registry-redirect/)。 ## Kubernetes 社区自治软件包仓库相关说明 在 2023 年年初,Kubernetes 项目[引入了](https://kubernetes.io/zh-cn/blog/2023/08/15/pkgs-k8s-io-introduction/) __pkgs.k8s.io__ , 这是 Debian 和 RPM 软件包所用的社区自治软件包仓库。这些社区自治的软件包仓库取代了先前由 Google 管理的仓库 ( __apt.kubernetes.io__ 和 __yum.kubernetes.io__ )。在 2023 年 9 月 13 日,这些老旧的仓库被正式弃用,其内容被冻结。 有关这一变更的细节或你若想查看是否受到影响, 请参阅[弃用公告](https://kubernetes.io/zh-cn/blog/2023/08/31/legacy-package-repository-deprecation/)。 ## Kubernetes v1.29 的弃用和移除说明 有关 Kubernetes v1.29 计划弃用的完整列表, 参见官方 [API 移除](https://kubernetes.io/zh-cn/docs/reference/using-api/deprecation-guide/#v1-29)列表。 ### 移除与云驱动的内部集成([KEP-2395](https://kep.k8s.io/2395)) 对于 Kubernetes v1.29,默认特性门控 __DisableCloudProviders__ 和 __DisableKubeletCloudCredentialProviders__ 都将被设置为 __true__ 。这个变更将要求当前正在使用内部云驱动集成(Azure、GCE 或 vSphere)的用户启用外部云控制器管理器, 或者将关联的特性门控设置为 __false__ 以选择传统的集成方式。 启用外部云控制器管理器意味着你必须在集群的控制平面中运行一个合适的云控制器管理器; 同时还需要为 kubelet(在每个相关节点上)为整个控制平面(kube-apiserver 和 kube-controller-manager) 设置命令行参数 __--cloud-provider=external__ 。 有关如何启用和运行外部云控制器管理器的细节, 参阅[管理云控制器管理器](https://kubernetes.io/zh-cn/docs/tasks/administer-cluster/running-cloud-controller/)和 [迁移多副本的控制面以使用云控制器管理器](https://kubernetes.io/zh-cn/docs/tasks/administer-cluster/controller-manager-leader-migration/)。 有关云控制器管理器的常规信息,请参阅 Kubernetes 文档中的[云控制器管理器](https://kubernetes.io/zh-cn/docs/concepts/architecture/cloud-controller/)。 ### 移除 __v1beta2__ 流量控制 API 组 在 Kubernetes v1.29 中,将[不再提供](https://kubernetes.io/zh-cn/docs/reference/using-api/deprecation-guide/#v1-29) FlowSchema 和 PriorityLevelConfiguration 的 **flowcontrol.apiserver.k8s.io/v1beta2** API 版本。 为了做好准备,你可以编辑现有的清单(Manifest)并重写客户端软件,以使用自 v1.26 起可用的 __flowcontrol.apiserver.k8s.io/v1beta3__ API 版本。所有现有的持久化对象都可以通过新的 API 访问。 __flowcontrol.apiserver.k8s.io/v1beta3__ 中的显著变化包括将 PriorityLevelConfiguration 的 __spec.limited.assuredConcurrencyShares__ 字段更名为 __spec.limited.nominalConcurrencyShares__ 。 ### 弃用针对 Node 的 __status.nodeInfo.kubeProxyVersion__ 字段 在 v1.29 中,针对 Node 对象的 __ .status.kubeProxyVersion__ 字段将被 [标记为弃用](https://github.com/kubernetes/enhancements/issues/4004), 准备在后续的一个发行版本中移除。这是因为此字段并不准确,它由 kubelet 设置, 而 kubelet 实际上并不知道 kube-proxy 版本,甚至不知道 kube-proxy 是否在运行。 ## 了解更多 Kubernetes 发行说明中宣告了弃用信息。你可以在以下版本的发行说明中看到待弃用的公告: * [Kubernetes v1.25](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.25.md#deprecation) * [Kubernetes v1.26](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.26.md#deprecation) * [Kubernetes v1.27](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.27.md#deprecation) * [Kubernetes v1.28](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.28.md#deprecation) 社区将在 [Kubernetes v1.29](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.29.md#deprecation) 的 CHANGELOG 中正式宣布该版本的弃用信息。 有关弃用和移除流程的细节,参阅 Kubernetes 官方[弃用策略](https://kubernetes.io/zh-cn/docs/reference/using-api/deprecation-policy/#deprecating-parts-of-the-api)文档。 ## 参考文档 原英文 blog 地址: