本文发表于一年多前。旧文章可能包含过时内容。请检查页面中的信息自发布以来是否已变得不正确。

Kubernetes 1.29 中的移除、弃用和重大变更

与每个版本一样,Kubernetes v1.29 将引入一些功能的弃用和移除。我们持续发布高质量版本的能力,证明了我们强大的开发周期和健康的社区。以下是 Kubernetes 1.29 版本中即将出现的一些弃用和移除。

Kubernetes API 移除和弃用流程

Kubernetes 项目对功能有明确的弃用策略。该策略规定,只有在同一 API 有更新、更稳定的版本可用时,才能弃用稳定的 API,并且 API 的每个稳定级别都有最低生命周期。被弃用的 API 是指已被标记为在未来 Kubernetes 版本中移除的 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 的社区所属镜像仓库来托管其容器镜像。从去年三月开始,访问旧的 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 的弃用和移除

请参阅官方的 API 移除列表,了解 Kubernetes v1.29 中所有计划的弃用项的完整列表。

移除与云提供商的树内集成(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 版本将不再被提供

为准备此变更,你可以编辑现有的清单文件并重写客户端软件,以使用自 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 字段

Node 对象的 .status.kubeProxyVersion 字段将在 v1.29 中被标记为弃用,为在未来版本中移除做准备。该字段不准确,由 kubelet 设置,而 kubelet 实际上并不知道 kube-proxy 的版本,甚至不知道 kube-proxy 是否在运行。

想了解更多吗?

弃用信息会在 Kubernetes 发行说明中公布。你可以在以下版本的发行说明中看到待弃用功能的公告:

我们将在 Kubernetes v1.29 的变更日志中正式宣布该版本带来的弃用信息。

有关弃用和移除过程的信息,请参阅 Kubernetes 官方的弃用策略文档。