Kubernetes v1.31 中的移除和主要变更

随着 Kubernetes 的发展和成熟,为了项目的整体健康,某些特性可能会被弃用、删除或替换为更好的特性。 本文阐述了 Kubernetes v1.31 版本的一些更改计划,发行团队认为你应当了解这些更改, 以便持续维护 Kubernetes 环境。 下面列出的信息基于 v1.31 版本的当前状态;这些状态可能会在实际发布日期之前发生变化。

Kubernetes API 删除和弃用流程

Kubernetes 项目针对其功能特性有一个详细说明的弃用策略。 此策略规定,只有当某稳定 API 的更新、稳定版本可用时,才可以弃用该 API,并且 API 的各个稳定性级别都有对应的生命周期下限。 已弃用的 API 标记为在未来的 Kubernetes 版本中删除, 这类 API 将继续发挥作用,直至被删除(从弃用起至少一年),但使用时会显示警告。 已删除的 API 在当前版本中不再可用,因此你必须将其迁移到替换版本。

  • 正式发布的(GA)或稳定的 API 版本可被标记为已弃用,但不得在 Kubernetes 主要版本未变时删除。

  • Beta 或预发布 API 版本在被弃用后,必须保持 3 个发布版本中仍然可用。

  • Alpha 或实验性 API 版本可以在任何版本中删除,不必提前通知。

无论 API 是因为某个特性从 Beta 版升级到稳定版,还是因为此 API 未成功而被删除,所有删除都将符合此弃用策略。 每当删除 API 时,迁移选项都会在文档中传达。

关于 SHA-1 签名支持的说明

go1.18(2022 年 3 月发布)中,crypto/x509 库开始拒绝使用 SHA-1 哈希函数签名的证书。 虽然 SHA-1 被确定为不安全,并且公众信任的证书颁发机构自 2015 年以来就没有颁发过 SHA-1 证书, 但在 Kubernetes 环境中,仍可能存在用户提供的证书通过私人颁发机构使用 SHA-1 哈希函数签名的情况, 这些证书用于聚合 API 服务器或 Webhook。 如果你依赖基于 SHA-1 的证书,则必须通过在环境中设置 GODEBUG=x509sha1=1 以明确选择重新支持这种证书。

鉴于 Go 的 GODEBUG 兼容性策略x509sha1 GODEBUG 和对 SHA-1 证书的支持将 在 2025 年上半年发布的 go1.24 中完全消失。 如果你依赖 SHA-1 证书,请开始放弃使用它们。

请参阅 Kubernetes 问题 #125689, 以更好地了解对 SHA-1 支持的时间表,以及 Kubernetes 发布采用 go1.24 的计划时间、如何通过指标和审计日志检测 SHA-1 证书使用情况的更多详细信息。

Kubernetes 1.31 中的弃用和删除

弃用节点的 status.nodeInfo.kubeProxyVersion 字段(KEP 4004

Node 的 .status.nodeInfo.kubeProxyVersion 字段在 Kubernetes v1.31 中将被弃用, 并将在后续版本中删除。该字段被弃用是因为其取值原来不准确,并且现在也不准确。 该字段由 kubelet 设置,而 kubelet 没有关于 kube-proxy 版本或 kube-proxy 是否正在运行的可靠信息。

在 v1.31 中,DisableNodeKubeProxyVersion 特性门控将默认设置为 true, 并且 kubelet 将不再尝试为其关联的 Node 设置 .status.kubeProxyVersion 字段。

删除所有云驱动的树内集成组件

正如之前一篇文章中所强调的, v1.31 版本将删除云驱动集成的树内支持的最后剩余部分。 这并不意味着你无法与某云驱动集成,只是你现在必须使用推荐的外部集成方法。 一些集成组件是 Kubernetes 项目的一部分,其余集成组件则是第三方软件。

这一里程碑标志着将所有云驱动集成组件从 Kubernetes 核心外部化的过程已经完成 (KEP-2395), 该过程从 Kubernetes v1.26 开始。 这一变化有助于 Kubernetes 进一步成为真正的供应商中立平台。

有关云驱动集成的更多详细信息,请阅读我们的 v1.29 云驱动集成特性的博客。 有关树内代码删除的更多背景信息,请阅读 (v1.29 弃用博客)。

后一个博客还包含对需要迁移到 v1.29 及更高版本的用户有用的信息。

删除 kubelet --keep-terminated-pod-volumes 命令行标志

kubelet 标志 --keep-terminated-pod-volumes 已于 2017 年弃用,将在 v1.31 版本中被删除。

你可以在拉取请求 #122082 中找到更多详细信息。

删除 CephFS 卷插件

CephFS 卷插件已在此版本中删除, 并且 cephfs 卷类型已无法使用。

建议你改用 CephFS CSI 驱动程序 作为第三方存储驱动程序。 如果你在将集群版本升级到 v1.31 之前在使用 CephFS 卷插件,则必须重新部署应用才能使用新驱动。

CephFS 卷插件在 v1.28 中正式标记为已弃用。

删除 Ceph RBD 卷插件

v1.31 版本将删除 Ceph RBD 卷插件及其 CSI 迁移支持, rbd 卷类型将无法继续使用。

建议你在集群中使用 RBD CSI 驱动。 如果你在将集群版本升级到 v1.31 之前在使用 Ceph RBD 卷插件,则必须重新部署应用以使用新驱动。

Ceph RBD 卷插件在 v1.28 中正式标记为已弃用。

kube-scheduler 中非 CSI 卷限制插件的弃用

v1.31 版本将弃用所有非 CSI 卷限制调度程序插件, 并将从默认插件中删除一些已弃用的插件,包括:

  • AzureDiskLimits
  • CinderLimits
  • EBSLimits
  • GCEPDLimits

建议你改用 NodeVolumeLimits 插件,因为它可以处理与已删除插件相同的功能,因为这些卷类型已迁移到 CSI。 如果你在调度器配置中显式使用已弃用的插件, 请用 NodeVolumeLimits 插件替换它们。 AzureDiskLimitsCinderLimitsEBSLimitsGCEPDLimits 插件将在未来的版本中被删除。

这些插件将从默认调度程序插件列表中删除,因为它们自 Kubernetes v1.14 以来已被弃用。

展望未来

Kubernetes v1.32 计划删除的官方 API 包括:

  • 将删除 flowcontrol.apiserver.k8s.io/v1beta3 API 版本的 FlowSchema 和 PriorityLevelConfiguration。 为了做好准备,你可以编辑现有清单并重写客户端软件以使用自 v1.29 起可用的 flowcontrol.apiserver.k8s.io/v1 API 版本。 所有现有的持久化对象都可以通过新 API 访问。flowcontrol.apiserver.k8s.io/v1beta3 中需要注意的变化包括优先级配置 spec.limited.nominalConcurrencyShares 字段仅在未指定时默认为 30,并且显式设置为 0 的话不会被更改为 30。

有关更多信息,请参阅 API 弃用指南

想要了解更多?

Kubernetes 发行说明中会宣布弃用信息。 我们将在 Kubernetes v1.31 中正式宣布弃用信息,作为该版本的 CHANGELOG 的一部分。

你可以在发行说明中看到待弃用的公告: