Kubernetes 重大更改和删除
随着 Kubernetes 的发展和成熟,有些功能可能会被弃用、删除或替换。Kubernetes v1.25 包括几项重大更改和删除。
Kubernetes API 移除和弃用流程
Kubernetes 项目有一个记录良好的特性弃用策略[1]。该策略规定:
- 只有当同一 API 的更新、稳定版本可用并且 API 具有每个稳定性级别的最短生命周期时,才可能弃用稳定 API。
- 不推荐使用未来 Kubernetes 版本中被标记为删除的 API;
- 它将继续运行,直到被删除(至少从弃用一年),但使用将显示警告。
- 删除的 API 在当前版本中不再可用时,您必须迁移到新的替换功能。
- 普遍可用 (GA) 或稳定的 API 版本可能被标记为已弃用,但不得在 Kubernetes 的主要版本中删除。
- 弃用后的 3 个版本必须支持 Beta 或预发布 API 版本。
- Alpha 版或实验性 API 版本可能会在任何版本中被删除,恕不另行通知。
无论 API 是由于功能从 beta 升级到稳定还是因为该 API 根本没有成功而被删除,所有删除都符合此弃用政策。每当删除 API 时,文档中都会传达迁移选项。
关于 PodSecurityPolicy 的说明
我们在 v1.21 中弃用 PodSecurityPolicy[2],在 Kubernetes v1.25 中将删除它。PodSecurityPolicy 的复杂且经常令人困惑的用法需要进行更改,不幸的是,这将是破坏性更改。为了解决这个问题,它被删除,取而代之的是 Pod Security Admission
,它也在这个版本中逐渐稳定。如果您当前依赖 PodSecurityPolicy,请按照迁移到 Pod Security Admission[3]的说明进行操作。
Kubernetes v1.25 的主要变化
除了删除 PodSecurityPolicy 之外,Kubernetes v1.25 还包括几项重大更改。
CSI 迁移[4]
将 in-tree 卷插件移至 out-of-tree CSI 驱动程序的努力仍在继续,核心 CSI 迁移功能在 v1.25 中成为 GA。这是完全删除 in-tree 卷插件的重要一步。
卷插件弃用和删除
有几个卷被弃用或删除。
GlusterFS 将在 v1.25 中被弃用[5]。虽然为它构建了 CSI 驱动程序,但尚未对其进行维护。讨论[6]了迁移到兼容 CSI 驱动程序的可能性,但最终决定开始从树内驱动程序中弃用 GlusterFS 插件。
此版本也弃用了 Portworx in-tree 卷插件[7],正在删除 Flocker、Quobyte 和 StorageOS in-tree 卷插件。
声明不受支持的 vSphere 版本[8]
从 Kubernetes v1.25 开始,树内 vSphere 卷驱动程序将不支持 7.0u2 之前的任何 vSphere 版本。查看 v1.25 详细的发行说明以获取有关如何处理此问题的更多建议。
签署发布工件[9]
改进发布过程的安全状况的另一个步骤是,Kubernetes 发布工件的签名将在此版本中升级为 Beta。这与针对 Kubernetes 发布过程的目标 SLSA 3 级合规性的提议增强一致。
支持 cgroup v2 升级到稳定版[10]
两年多前,新的内核 cgroups v2 API 被宣布为稳定的,在这个版本中,我们正朝着全面采用它迈出坚实的步伐。虽然将继续支持 cgroup v1,但此更改使我们准备好应对 cgroup v1 的最终弃用和 cgroup v2 成为替代。
清理 IPTables 链所有权[11]
从 Kubernetes 1.25 版本开始,Kubernetes 创建的 iptables 链将仅支持内部 Kubernetes 用例。从 v1.25 开始,Kubelet 将逐渐走向不在nat
表中创建以下 iptables 链:
KUBE-MARK-DROP
KUBE-MARK-MASQ
KUBE-POSTROUTING
此更改将通过IPTablesCleanup
功能门逐步实施。
展望未来
为 Kubernetes 1.26 计划的 API 移除[12]的官方列表是:
- Beta FlowSchema 和 PriorityLevelConfiguration API (flowcontrol.apiserver.k8s.io/v1beta1)
- 测试版 HorizontalPodAutoscaler API (autoscaling/v2beta2)