这篇文章已超过一年。较旧的文章可能包含过时的内容。请检查页面中的信息自发布以来是否已变得不正确。
Kubernetes 1.24 中的删除和弃用
随着 Kubernetes 的发展,功能和 API 会定期被重新审视和移除。新功能可能会提供解决现有问题的替代或改进方法,从而促使团队删除旧方法。
我们希望确保您了解 Kubernetes 1.24 版本中即将发生的变化。该版本将弃用几个(beta)API,而改用相同 API 的稳定版本。Kubernetes 1.24 版本中的主要变化是删除 Dockershim。这将在下面讨论,并在发布时进行更深入的探讨。要初步了解 Kubernetes 1.24 中即将发生的变化,请查看正在进行中的CHANGELOG。
关于 Dockershim 的说明
可以肯定地说,随着 Kubernetes 1.24 版本的发布,最受关注的删除是 Dockershim。Dockershim 在 v1.20 中被弃用。如Kubernetes 1.20 更改日志中所述:“kubelet 中的 Docker 支持现已弃用,将在未来的版本中删除。kubelet 使用一个名为“dockershim”的模块,该模块为 Docker 实现 CRI 支持,并且在 Kubernetes 社区中遇到了维护问题。”随着即将发布的 Kubernetes 1.24 版本,Dockershim 最终将被删除。
在文章不要惊慌:Kubernetes 和 Docker中,作者简洁地概括了该变化的影响,并鼓励用户保持冷静。
Docker 作为底层运行时正在被弃用,取而代之的是使用为 Kubernetes 创建的容器运行时接口 (CRI) 的运行时。Docker 生成的映像将继续在您的集群中与所有运行时一起工作,就像它们一直以来的那样。
已经创建了一些指南,其中包含有关从 dockershim 迁移到与 Kubernetes 直接兼容的容器运行时的有用信息。您可以在 Kubernetes 文档中的从 dockershim 迁移页面上找到它们。
有关 Kubernetes 为什么要放弃 dockershim 的更多信息,请查看恰如其名的:Kubernetes 正在放弃 Dockershim以及更新的 dockershim 删除常见问题解答。
请查看您的集群是否已为 v1.24 做好准备?这篇文章,了解如何确保您的集群在从 v1.23 升级到 v1.24 后继续工作。
Kubernetes API 删除和弃用过程
Kubernetes 包含大量随着时间推移而发展的组件。在某些情况下,这种演变会导致 API、标志或整个功能被删除。为了防止用户面临重大更改,Kubernetes 贡献者采用了一项功能弃用策略。该策略确保只有在存在同一 API 的较新稳定版本时才可以弃用稳定 API,并且 API 具有以下稳定性级别指示的最低生命周期。
- 通用可用 (GA) 或稳定 API 版本可能会被标记为已弃用,但不得在 Kubernetes 的主要版本中删除。
- Beta 或预发布 API 版本必须在弃用后支持 3 个版本。
- Alpha 或实验性 API 版本可以在任何版本中删除,无需事先发出弃用通知。
无论是因为 beta 功能升级为稳定版本而删除 API 还是因为该 API 未被证明成功,删除都遵循相同的弃用策略。Kubernetes 将继续确保在删除 API 时记录迁移选项。
已弃用的 API 是指已被标记为在未来 Kubernetes 版本中删除的 API。已删除的 API 是指在被弃用后,当前受支持的 Kubernetes 版本中不再可用的 API。这些删除已被较新的、稳定的/通用可用 (GA) API 取代。
Kubernetes 1.24 的 API 删除、弃用和其他更改
- 动态 kubelet 配置:
DynamicKubeletConfig
用于启用 kubelet 的动态配置。DynamicKubeletConfig
标志在 Kubernetes 1.22 中被弃用。在 v1.24 中,此功能门将从 kubelet 中删除。有关更多信息,请参阅“动态 kubelet 配置已删除” KEP。 - 动态日志清理:实验性动态日志清理功能已弃用,将在 v1.24 中删除。此功能引入了一个日志过滤器,该过滤器可以应用于所有 Kubernetes 系统组件日志,以防止各种类型的敏感信息通过日志泄漏。有关更多信息和替代方法,请参阅KEP-1753:Kubernetes 系统组件日志清理。
- 从 kubelet 中删除 Dockershim:Docker 的容器运行时接口 (CRI)(即 Dockershim)目前是 kubelet 代码库中的内置容器运行时。它在 v1.20 中被弃用。从 v1.24 开始,kubelet 将不再具有 dockershim。请查看有关您需要做什么才能为 v1.24 做好准备的博客。
- 用于 Pod 调度的存储容量跟踪:CSIStorageCapacity API 支持通过 CSIStorageCapacity 对象公开当前可用的存储容量,并增强使用具有后期绑定的 CSI 卷的 Pod 的调度。在 v1.24 中,CSIStorageCapacity API 将是稳定的。该 API 升级为稳定版,会启动 v1beta1 CSIStorageCapacity API 的弃用。有关更多信息,请参阅用于 Pod 调度的存储容量约束 KEP。
- kubeadm 控制平面节点上不再存在
master
标签。对于新集群,标签“node-role.kubernetes.io/master”将不再添加到控制平面节点,只会添加标签“node-role.kubernetes.io/control-plane”。有关更多信息,请参阅KEP-2067:重命名 kubeadm “master” 标签和污点。 - 将删除 VolumeSnapshot v1beta1 CRD。Kubernetes 的卷快照和还原功能以及容器存储接口 (CSI),它提供了标准化的 API 设计 (CRD),并为 CSI 卷驱动程序添加了 PV 快照/还原支持,在 v1.20 中升级为 GA。VolumeSnapshot v1beta1 在 v1.20 中被弃用,并且在 v1.24 版本中将不再受支持。有关更多信息,请参阅KEP-177:CSI 快照和卷快照 GA 博客博客文章。
如何做
删除 Dockershim
如前所述,有几个关于从 dockershim 迁移的指南。您可以从查找节点上的容器运行时开始。如果您的节点正在使用 dockershim,则可能存在其他 Docker Engine 依赖项,例如 Pod 或第三方工具执行 Docker 命令或 Docker 配置文件中的私有注册表。您可以按照检查 dockershim 删除是否影响您指南来查看可能的 Docker Engine 依赖项。在升级到 v1.24 之前,您决定是继续使用 Docker Engine 并将 Docker Engine 节点从 dockershim 迁移到 cri-dockerd,还是迁移到与 CRI 兼容的运行时。这是有关将节点上的容器运行时从 Docker Engine 更改为 containerd的指南。
kubectl convert
kubectl convert
kubectl
插件有助于解决从已弃用的 API 迁移的问题。该插件有助于在不同的 API 版本之间转换清单,例如,从已弃用到未弃用的 API 版本。有关 API 迁移过程的更多一般信息,请参阅已弃用的 API 迁移指南。按照安装 kubectl convert
插件文档下载并安装 kubectl-convert
二进制文件。
展望未来
计划在今年晚些时候发布的 Kubernetes 1.25 和 1.26 版本将停止服务几个当前稳定的 Kubernetes API 的 beta 版本。v1.25 版本还将删除在 Kubernetes 1.21 中被弃用的 PodSecurityPolicy,并且不会升级为稳定版。有关更多信息,请参阅PodSecurityPolicy 弃用:过去、现在和未来。
计划用于 Kubernetes 1.25 的官方API 删除列表是
- beta CronJob API (batch/v1beta1)
- beta EndpointSlice API (discovery.k8s.io/v1beta1)
- beta Event API (events.k8s.io/v1beta1)
- beta HorizontalPodAutoscaler API (autoscaling/v2beta1)
- beta PodDisruptionBudget API (policy/v1beta1)
- beta PodSecurityPolicy API (policy/v1beta1)
- beta RuntimeClass API (node.k8s.io/v1beta1)
计划用于 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 官方的弃用策略文档。