本文发表于一年多前。旧文章可能包含过时内容。请检查页面中的信息自发布以来是否已变得不正确。
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 中的弃用和移除
弃用 Node 的 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
插件替换它们。AzureDiskLimits
、CinderLimits
、EBSLimits
和 GCEPDLimits
插件将在未来的版本中被移除。
这些插件将从默认调度器插件列表中移除,因为它们自 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
中的显著变化包括,PriorityLevelConfiguration 的spec.limited.nominalConcurrencyShares
字段仅在未指定时默认为 30,显式指定的值 0 不会被更改为 30。
更多信息,请参考API 弃用指南。
想了解更多吗?
Kubernetes 发行说明会公布弃用信息。我们将在 Kubernetes v1.31 的 CHANGELOG 中正式宣布弃用信息,作为该版本的一部分。
你可以在以下版本的发行说明中看到待弃用的公告: