前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Kubernetes 1.24的删除和弃用

Kubernetes 1.24的删除和弃用

作者头像
CNCF
发布2022-04-19 09:53:03
1.4K0
发布2022-04-19 09:53:03
举报
文章被收录于专栏:CNCFCNCFCNCF

作者:Mickey Boxell(Oracle)

随着 Kubernetes 的发展,特性和 API 会定期给重新访问和删除。新的特性可能会提供一种替代的或改进的方法,来解决现有的问题,激励团队去除旧的方法。根据Kubernetes 弃用策略[1],旧的 API 首先被弃用(deprecated),然后被删除(removed)。

我们想确保你知道 Kubernetes 1.24 版本的变化。该版本将弃用几个(测试版/beta)API,转而支持相同 API 的稳定版本。Kubernetes 1.24 版本的主要变化是删除 Dockershim[2]。这将在下面讨论,并将在发布时更深入地探讨。要提前了解 Kubernetes 1.24 中的变化,请查看正在更新的CHANGELOG[3]

关于 Dockershim

可以肯定地说,随着 Kubernetes 1.24 的发布,最受关注的删除是 Dockershim。Dockershim 在 1.20 版中已被弃用。如Kubernetes 1.20 变更日志[4]中所述:“Docker support in the kubelet is now deprecated and will be removed in a future release. The kubelet uses a module called "dockershim" which implements CRI support for Docker and it has seen maintenance issues in the Kubernetes community.”。随着 Kubernetes 1.24 的即将发布,Dockershim 将最终给删除。

在文章“Don't Panic: Kubernetes and Docker[5]”里,作者简洁地捕捉到了变化的影响,并鼓励用户保持冷静:

Docker as an underlying runtime is being deprecated in favor of runtimes that use the Container Runtime Interface (CRI) created for Kubernetes. Docker-produced images will continue to work in your cluster with all runtimes, as they always have.

已经有几个指南,提供了关于从 dockershim 迁移到与 Kubernetes 直接兼容的容器运行时的有用信息。你可以在 Kubernetes 文档中的从 dockershim 迁移[6]页面上找到它们。

有关 Kubernetes 为何离开 dockershim 的更多信息,请查看Kubernetes is Moving on From Dockershim[7]以及最新的 dockershim 删除 FAQ[8]

看看Is Your Cluster Ready for v1.24?[9]一文,了解如何确保你的集群在从 1.23 版升级到 1.24 版后继续工作。

Kubernetes API 删除和弃用流程

Kubernetes 包含大量随时间演变的组件。在某些情况下,这种演变会导致 API、标志或整个特性被删除。为了防止用户面临重大变化,Kubernetes 贡献者采用了一种特性弃用策略。该策略确保稳定 API 仅在该 API 的较新稳定版本可用时才被弃用,并且 API 具有由以下稳定性级别指示的最短生存期:

  • 普遍可用(GA)或稳定的 API 版本可能会被标记为弃用,但不得在 Kubernetes 的主要版本中删除。
  • 测试版或预发布 API 版本在弃用后必须支持 3 个版本。
  • Alpha 或实验 API 版本可能会在任何版本中被删除,恕不另行通知。

删除遵循相同的弃用策略,无论 API 是由于测试版功能升级为稳定版,还是因为该 API 未被证明是成功的而被删除。Kubernetes 将继续确保每当 API 被删除时,迁移选项都被记录在案。

弃用的 API(Deprecated API)是那些在未来的 Kubernetes 版本中给标记会删除的 API。删除的 API(Removed API)是那些在当前受支持的 Kubernetes 版本中不再可用的 API,因为它们已经给弃用。这些删除已被更新的、稳定的/可普遍可用的(GA)API 所取代。

Kubernetes 1.24 的 API 删除、弃用和其他更改

  • Dynamic kubelet configuration[10]:DynamicKubeletConfig 用于启用 kubelet 的动态配置。Kubernetes 1.22 中弃用 DynamicKubeletConfig 标志。从 v1.24 开始,kubelet 中删除了特征门。请见重新配置 kubelet[11]。更多信息请参考[“Dynamic kubelet config is removed" KEP](https://github.com/kubernetes/enhancements/issues/281 "“Dynamic kubelet config is removed" KEP")。
  • Dynamic log sanitization[12]:实验性的动态日志清理功能已给弃用,并在 1.24 版中给删除。该功能引入了一个日志过滤器,可应用于所有 Kubernetes 系统组件日志,以防止各种类型的敏感信息通过日志泄漏。有关更多信息和替代方法请参考KEP-1753: Kubernetes system components logs sanitization[13]
  • In-tree provisioner to CSI driver migration:这适用于许多树内插件,包括Portworx[14]。有关更多信息,请参考In-tree Storage Plugin to CSI Migration Design Doc[15]
  • Removing Dockershim from kubelet[16]:Docker(即 Docker shim)的容器运行时接口(CRI)目前是 kubelet 代码库中的内置容器运行时。在 1.20 版中给弃用。在 1.24 版,dockershim 已经从 kubelet 中给删除。看看这篇博客what you need to do be ready for v1.24.[17]做准备。
  • Storage capacity tracking for pod scheduling[18]:CSIStorageCapacity API 支持通过 CSIStorageCapacity 对象暴露当前可用的存储容量,并通过后期绑定增强使用 CSI 卷的 pod 的调度。CSIStorageCapacity API 自 1.24 版起提供稳定版本。1beta1 CSIStorageCapacity API 在 1.24 版中给弃用。有关更多信息,请参考Storage Capacity Constraints for Pod Scheduling KEP[19]
  • The master label is no longer present on kubeadm control plane nodes[20]。对于新集群,“node-role.kubernetes.io/master”标签将不再添加到控制平面节点,只会添加“node-role.kubernetes.io/control-plane”标签。有关更多信息,请参考[KEP-2067: Rename the kubeadm "master" label and taint](https://github.com/kubernetes/enhancements/tree/master/keps/sig-cluster-lifecycle/kubeadm/2067-rename-master-label-taint "KEP-2067: Rename the kubeadm "master" label and taint")。
  • VolumeSnapshot v1beta1 CRD will be removed in v1.24[21]。Kubernetes 和容器存储接口(CSI)的卷快照和恢复功能在 1.20 版中进入测试版,该功能提供标准化 API 设计(CRD)并为 CSI 卷驱动程序添加了 PV 快照/恢复支持。VolumeSnapshot v1beta1 在 1.21 版中已给弃用,现在不受支持。更多信息请参考KEP-177: CSI Snapshot[22]以及kubernetes-csi/external-snapshotter[23]

kubectl convert

kubectl 的kubectl convert[24]插件有助于解决弃用的 API 的迁移问题。该插件方便了不同 API 版本之间清单的转换,例如,从弃用的 API 版本到非弃用的 API 版本。关于 API 迁移过程的更多一般信息可以在Deprecated API Migration Guide[25]中找到。按照安装 kubectl convert 插件[26]文档下载并安装 ku ectl-convert 二进制文件。

展望未来

计划在今年晚些时候发布的 Kubernetes 1.25 和 1.26 版本将停止提供几种目前稳定的 Kubernetes API 的测试版本。v1.25 版本还将删除 PodSecurityPolicy,这在 Kubernetes 1.21 中已给弃用,不会升级到 stable。有关更多信息,请见PodSecurityPolicy Deprecation: Past, Present, and Future[27]

Kubernetes 1.25 计划删除的 API[28]的官方列表是:

  • The beta CronJob API (batch/v1beta1)
  • The beta EndpointSlice API (discovery.k8s.io/v1beta1)
  • The beta Event API (events.k8s.io/v1beta1)
  • The beta HorizontalPodAutoscaler API (autoscaling/v2beta1)
  • The beta PodDisruptionBudget API (policy/v1beta1)
  • The beta PodSecurityPolicy API (policy/v1beta1)
  • The beta RuntimeClass API (node.k8s.io/v1beta1)

Kubernetes 1.26 计划删除的 API[29]的官方列表是:

  • The beta FlowSchema and PriorityLevelConfiguration APIs (flowcontrol.apiserver.k8s.io/v1beta1)
  • The beta HorizontalPodAutoscaler API (autoscaling/v2beta2)

了解更多

Kubernetes 版本说明中宣布了弃用信息。你可以在以下版本的发行说明中看到待定弃用的公告:

  • Kubernetes 1.21[30]
  • Kubernetes 1.22[31]
  • Kubernetes 1.23[32]
  • 我们将正式宣布Kubernetes 1.24[33]的弃用信息,作为该版本的 CHANGELOG 的一部分。

有关弃用和删除过程的信息,请查看 Kubernetes 官方弃用策略文档。

参考资料

[1]Kubernetes 弃用策略: https://kubernetes.io/docs/reference/using-api/deprecation-policy/

[2]删除 Dockershim: https://github.com/kubernetes/enhancements/issues/2221

[3]CHANGELOG: https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.24.md

[4]Kubernetes 1.20 变更日志: https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.20.md#deprecation

[5]Don't Panic: Kubernetes and Docker: https://kubernetes.io/blog/2020/12/02/dont-panic-kubernetes-and-docker/

[6]从 dockershim 迁移: https://kubernetes.io/docs/tasks/administer-cluster/migrating-from-dockershim/

[7]Kubernetes is Moving on From Dockershim: https://kubernetes.io/blog/2022/01/07/kubernetes-is-moving-on-from-dockershim/

[8]最新的 dockershim 删除 FAQ: https://kubernetes.io/blog/2022/02/17/dockershim-faq/

[9]Is Your Cluster Ready for v1.24?: https://kubernetes.io/blog/2022/03/31/ready-for-dockershim-removal/

[10]Dynamic kubelet configuration: https://github.com/kubernetes/enhancements/issues/281

[11]重新配置 kubelet: https://kubernetes.io/docs/tasks/administer-cluster/reconfigure-kubelet/

[12]Dynamic log sanitization: https://github.com/kubernetes/kubernetes/pull/107207

[13]KEP-1753: Kubernetes system components logs sanitization: https://github.com/kubernetes/enhancements/tree/master/keps/sig-instrumentation/1753-logs-sanitization#deprecation

[14]Portworx: https://github.com/kubernetes/enhancements/issues/2589

[15]In-tree Storage Plugin to CSI Migration Design Doc: https://github.com/kubernetes/design-proposals-archive/blob/main/storage/csi-migration.md#background-and-motivations

[16]Removing Dockershim from kubelet: https://github.com/kubernetes/enhancements/issues/2221

[17]what you need to do be ready for v1.24.: https://kubernetes.io/blog/2022/03/31/ready-for-dockershim-removal/

[18]Storage capacity tracking for pod scheduling: https://github.com/kubernetes/enhancements/issues/1472

[19]Storage Capacity Constraints for Pod Scheduling KEP: https://github.com/kubernetes/enhancements/tree/master/keps/sig-storage/1472-storage-capacity-tracking

[20]The master label is no longer present on kubeadm control plane nodes: https://github.com/kubernetes/kubernetes/pull/107533

[21]VolumeSnapshot v1beta1 CRD will be removed in v1.24: https://github.com/kubernetes/enhancements/issues/177

[22]KEP-177: CSI Snapshot: https://github.com/kubernetes/enhancements/tree/master/keps/sig-storage/177-volume-snapshot#kep-177-csi-snapshot

[23]kubernetes-csi/external-snapshotter: https://github.com/kubernetes-csi/external-snapshotter/releases/tag/v4.1.0

[24]kubectl convert: https://kubernetes.io/docs/tasks/tools/included/kubectl-convert-overview/

[25]Deprecated API Migration Guide: https://kubernetes.io/docs/reference/using-api/deprecation-guide/

[26]安装 kubectl convert 插件: https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/#install-kubectl-convert-plugin

[27]PodSecurityPolicy Deprecation: Past, Present, and Future: https://kubernetes.io/blog/2021/04/06/podsecuritypolicy-deprecation-past-present-and-future/

[28]Kubernetes 1.25 计划删除的 API: https://kubernetes.io/docs/reference/using-api/deprecation-guide/#v1-25

[29]Kubernetes 1.26 计划删除的 API: https://kubernetes.io/docs/reference/using-api/deprecation-guide/#v1-26

[30]Kubernetes 1.21: https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.21.md#deprecation

[31]Kubernetes 1.22: https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.22.md#deprecation

[32]Kubernetes 1.23: https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.23.md#deprecation

[33]Kubernetes 1.24: https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.24.md#deprecation


CNCF (Cloud Native Computing Foundation)成立于2015年12月,隶属于Linux Foundation,是非营利性组织。

CNCF(云原生计算基金会)致力于培育和维护一个厂商中立的开源生态系统,来推广云原生技术。我们通过将最前沿的模式民主化,让这些创新为大众所用。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-04-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 CNCF 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 关于 Dockershim
  • Kubernetes API 删除和弃用流程
  • Kubernetes 1.24 的 API 删除、弃用和其他更改
  • kubectl convert
  • 展望未来
  • 了解更多
    • 参考资料
    相关产品与服务
    容器服务
    腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档