作者: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]。
可以肯定地说,随着 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 仅在该 API 的较新稳定版本可用时才被弃用,并且 API 具有由以下稳定性级别指示的最短生存期:
删除遵循相同的弃用策略,无论 API 是由于测试版功能升级为稳定版,还是因为该 API 未被证明是成功的而被删除。Kubernetes 将继续确保每当 API 被删除时,迁移选项都被记录在案。
弃用的 API(Deprecated API)是那些在未来的 Kubernetes 版本中给标记会删除的 API。删除的 API(Removed API)是那些在当前受支持的 Kubernetes 版本中不再可用的 API,因为它们已经给弃用。这些删除已被更新的、稳定的/可普遍可用的(GA)API 所取代。
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]的官方列表是:
Kubernetes 1.26 计划删除的 API[29]的官方列表是:
Kubernetes 版本说明中宣布了弃用信息。你可以在以下版本的发行说明中看到待定弃用的公告:
有关弃用和删除过程的信息,请查看 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(云原生计算基金会)致力于培育和维护一个厂商中立的开源生态系统,来推广云原生技术。我们通过将最前沿的模式民主化,让这些创新为大众所用。