Kubernetes v1.31 中的移除和重大变更

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

Kubernetes API 删除和弃用过程

Kubernetes 项目对功能有完善的弃用策略。该策略规定,只有在有更新、稳定的 API 版本可用时,才能弃用稳定的 API,并且 API 对于每个稳定级别都有最短的生命周期。已弃用的 API 已被标记为在未来的 Kubernetes 版本中删除。它将继续运行直到删除(至少在弃用后一年),但使用时会显示警告。删除的 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 证书的支持将在 go1.24 中完全消失,该版本将于 2025 年上半年发布。如果您依赖于 SHA-1 证书,请开始迁移它们。

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

Kubernetes 1.31 中的弃用和删除

弃用 Nodes 的 status.nodeInfo.kubeProxyVersion 字段 (KEP 4004)

Nodes 的 .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 的正式列表包括

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

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

想了解更多?

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

您可以在以下版本的发布说明中看到有关待定弃用的公告: