Kubernetes 1.29 中的移除、弃用和主要变更

作者: Carol Valencia, Kristin Martin, Abigail McCarthy, James Quigley, Hosam Kamel

译者: Michael Yao (DaoCloud)

和其他每次发布一样,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 - 用户须知

Kubernetes 社区自治软件包仓库相关说明

在 2023 年年初,Kubernetes 项目引入了 pkgs.k8s.io, 这是 Debian 和 RPM 软件包所用的社区自治软件包仓库。这些社区自治的软件包仓库取代了先前由 Google 管理的仓库 (apt.kubernetes.ioyum.kubernetes.io)。在 2023 年 9 月 13 日,这些老旧的仓库被正式弃用,其内容被冻结。

有关这一变更的细节或你若想查看是否受到影响, 请参阅弃用公告

Kubernetes v1.29 的弃用和移除说明

有关 Kubernetes v1.29 计划弃用的完整列表, 参见官方 API 移除列表。

移除与云驱动的内部集成(KEP-2395

对于 Kubernetes v1.29,默认特性门控 DisableCloudProvidersDisableKubeletCloudCredentialProviders 都将被设置为 true。这个变更将要求当前正在使用内部云驱动集成(Azure、GCE 或 vSphere)的用户启用外部云控制器管理器, 或者将关联的特性门控设置为 false 以选择传统的集成方式。

启用外部云控制器管理器意味着你必须在集群的控制平面中运行一个合适的云控制器管理器; 同时还需要为 kubelet(在每个相关节点上)及整个控制平面(kube-apiserver 和 kube-controller-manager) 设置命令行参数 --cloud-provider=external

有关如何启用和运行外部云控制器管理器的细节, 参阅管理云控制器管理器迁移多副本的控制面以使用云控制器管理器

有关云控制器管理器的常规信息,请参阅 Kubernetes 文档中的云控制器管理器

移除 v1beta2 流量控制 API 组

在 Kubernetes 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 字段将被 标记为弃用, 准备在未来某个发行版本中移除。这是因为此字段并不准确,它由 kubelet 设置, 而 kubelet 实际上并不知道 kube-proxy 版本,甚至不知道 kube-proxy 是否在运行。

了解更多

弃用信息是在 Kubernetes 发布说明(Release Notes)中公布的。你可以在以下版本的发布说明中看到待弃用的公告:

我们将在 Kubernetes v1.29 的 CHANGELOG 中正式宣布与该版本相关的弃用信息。

有关弃用和移除流程的细节,参阅 Kubernetes 官方弃用策略文档。