本文发表于一年多前。旧文章可能包含过时内容。请检查页面中的信息自发布以来是否已变得不正确。
Kubernetes 1.25 中的移除和重大变更
随着 Kubernetes 的发展和成熟,为了项目的健康,一些特性可能会被弃用、移除或被改进的版本所取代。Kubernetes v1.25 包含了一些主要的变更和一个主要的移除。
Kubernetes API 移除和弃用流程
Kubernetes 项目对特性有明确的弃用策略文档。该策略规定,只有在同一 API 的更新、稳定版本可用时,才能弃用稳定的 API,并且 API 在每个稳定性级别都有最低的生命周期。被弃用的 API 是指已被标记为在未来 Kubernetes 版本中移除的 API;它将继续工作直到被移除(从弃用开始至少一年),但使用时会显示警告。被移除的 API 在当前版本中不再可用,此时你必须迁移到使用替代的 API。
- 正式发布(GA)或稳定的 API 版本可能会被标记为已弃用,但不能在 Kubernetes 的一个大版本中移除。
- Beta 或预发布 API 版本在弃用后必须再支持 3 个版本。
- Alpha 或实验性 API 版本可能在任何版本中被移除,而无需事先通知。
无论是由于特性从 Beta 阶段升级到稳定阶段而移除 API,还是因为该 API 未能成功,所有的移除都遵循此弃用策略。每当一个 API 被移除时,文档中都会提供迁移选项。
关于 PodSecurityPolicy 的说明
在 Kubernetes v1.25 中,继 v1.21 版本中被弃用之后,我们将移除 PodSecurityPolicy 。PodSecurityPolicy 已经为我们服务了很长时间,但其复杂且常常令人困惑的用法使得变更势在必行,而不幸的是这些变更是破坏性的。为了解决这个问题,它正在被移除,取而代之的是 Pod Security Admission,后者也在本次发布中升级为稳定版。如果您目前依赖于 PodSecurityPolicy,请遵循迁移到 Pod Security Admission 的说明。
Kubernetes v1.25 的主要变更
除了移除 PodSecurityPolicy 之外,Kubernetes v1.25 还将包括几个主要变更。
CSI 迁移
将树内(in-tree)卷插件迁移到树外(out-of-tree)CSI 驱动程序的工作仍在继续,核心的 CSI 迁移功能在 v1.25 中达到 GA 状态。这是朝着完全移除树内卷插件迈出的重要一步。
存储驱动程序的弃用和移除
几个卷插件正在被弃用或移除。
GlusterFS 将在 v1.25 中被弃用。虽然为其构建了一个 CSI 驱动程序,但并未得到维护。曾讨论过迁移到兼容的 CSI 驱动程序的可能性,但最终决定开始从树内驱动程序中弃用 GlusterFS 插件。Portworx 树内卷插件也在此版本中被弃用。Flocker、Quobyte 和 StorageOS 的树内卷插件正在被移除。
Flocker、Quobyte 和 StorageOS 的树内卷插件将在 v1.25 中被移除。这些插件的用户需要切换到等效的 CSI 驱动程序或其他存储提供商。
vSphere 版本支持的变更
从 Kubernetes v1.25 开始,树内 vSphere 卷驱动程序将不支持任何 7.0u2 之前的 vSphere 版本。一旦 Kubernetes v1.25 发布,请查看 v1.25 的详细发布说明,以获取有关如何处理此问题的更多建议。
清理 IPTables 链的所有权
在 Linux 上,Kubernetes(通常)会创建 iptables 链以确保网络数据包到达。尽管这些链及其名称一直是内部实现细节,但一些工具已经依赖于这种行为。将仅支持用于内部 Kubernetes 用例。从 v1.25 开始,Kubelet 将逐渐不再在 nat
表中创建以下 iptables 链:
KUBE-MARK-DROP
KUBE-MARK-MASQ
KUBE-POSTROUTING
这一变更将通过 IPTablesCleanup
特性门控分阶段实施。虽然这并非正式的弃用,但一些最终用户已经依赖于 kube-proxy
的特定内部行为。Kubernetes 项目总体上希望明确表示,不支持依赖这些内部细节,并且未来的实现将在此处改变其行为。
展望未来
计划在 Kubernetes 1.26 中移除的 API 的官方列表是:
- beta 版本的 FlowSchema 和 PriorityLevelConfiguration API (flowcontrol.apiserver.k8s.io/v1beta1)
- beta 版本的 HorizontalPodAutoscaler API (autoscaling/v2beta2)
想了解更多吗?
弃用信息会在 Kubernetes 发行说明中公布。你可以在以下版本的发行说明中看到待弃用功能的公告:
- Kubernetes 1.21
- Kubernetes 1.22
- Kubernetes 1.23
- Kubernetes 1.24
- 我们将在 Kubernetes 1.25 的 CHANGELOG 中正式宣布该版本附带的弃用项。
有关弃用和移除过程的信息,请查看官方的 Kubernetes 弃用策略文档。