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 升级到 stable 而被移除,还是因为该 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
feature gate 将默认设置为 true
,并且 kubelet 将不再尝试为其关联的 Node 设置 .status.kubeProxyVersion
字段。
移除所有树内(in-tree)云提供商集成
正如之前一篇文章中强调的,最后剩余的树内(in-tree)云提供商集成支持将作为 v1.31 版本的一部分被移除。这并不意味着您不能与云提供商集成,但您现在必须使用推荐的外部集成方法。一些集成是 Kubernetes 项目的一部分,而另一些是第三方软件。
这一里程碑标志着所有云提供商集成从 Kubernetes 核心 (KEP-2395) 的外部化过程完成,该过程始于 Kubernetes v1.26。这一变化有助于 Kubernetes 更接近于成为一个真正供应商中立的平台。
有关云提供商集成的更多详细信息,请阅读我们的v1.29 云提供商集成功能博客。有关树内代码移除的更多背景信息,我们邀请您查看 (v1.29 弃用博客)。
后一篇博客还包含需要迁移到 v1.29 及更高版本的用户的有用信息。
移除 kubelet 命令行标志 --keep-terminated-pod-volumes
2017 年已弃用的 kubelet 标志 --keep-terminated-pod-volumes
将作为 v1.31 版本的一部分被移除。
您可以在 pull request #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
插件。AzureDiskLimits
、CinderLimits
、EBSLimits
和 GCEPDLimits
插件将在未来版本中移除。
这些插件将从默认调度器插件列表中移除,因为它们自 Kubernetes v1.14 起就已弃用。
展望未来
Kubernetes v1.32 中计划移除的官方 API 列表包括:
- FlowSchema 和 PriorityLevelConfiguration 的
flowcontrol.apiserver.k8s.io/v1beta3
API 版本将被移除。为了准备此更改,您可以编辑现有 manifests 并重写客户端软件以使用自 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 中正式宣布这些弃用。
您可以在以下版本的发布说明中看到待定弃用的公告: