本文发布时间已超过一年。较旧的文章可能包含过时的内容。请检查页面中的信息自发布以来是否已不正确。
你的集群为 v1.24 做好准备了吗?
早在 2020 年 12 月,Kubernetes 宣布了 Dockershim 的弃用。在 Kubernetes 中,dockershim 是一个软件垫片,允许您将整个 Docker 引擎用作 Kubernetes 中的容器运行时。在即将发布的 v1.24 版本中,我们将移除 Dockershim - 弃用和移除之间的延迟符合 项目策略,即在弃用后至少支持特性一年。如果您是集群操作员,本指南包含有关此版本需要了解的实际情况。此外,您需要做些什么来确保您的集群不会崩溃!
首先,这是否会影响您?
如果您正在滚动您自己的集群,或者不确定此移除是否会影响您,请保持安全,并检查您是否对 Docker Engine 有任何依赖。请注意,使用 Docker Desktop 构建您的应用程序容器不是集群的 Docker 依赖项。Docker 创建的容器镜像符合 开放容器倡议(OCI),这是一个 Linux 基金会治理结构,定义了围绕容器格式和运行时的行业标准。它们可以在 Kubernetes 支持的任何容器运行时上正常工作。
如果您正在使用云提供商的托管 Kubernetes 服务,并且您没有显式更改容器运行时,则可能无需执行其他操作。Amazon EKS、Azure AKS 和 Google GKE 现在都默认使用 containerd,但如果您有任何节点自定义,则应确保它们不需要更新。要检查节点的运行时,请按照查找节点上使用的容器运行时进行操作。
无论您是滚动自己的集群还是使用云提供商的托管 Kubernetes 服务,您可能都需要迁移依赖 Docker Engine 的遥测或安全代理。
我有一个 Docker 依赖项。现在怎么办?
如果您的 Kubernetes 集群依赖于 Docker Engine,并且您打算升级到 Kubernetes v1.24(为了安全性和类似原因,您最终应该这样做),您将需要将容器运行时从 Docker Engine 更改为其他运行时,或使用 cri-dockerd。由于 containerd 是一个毕业的 CNCF 项目,也是 Docker 本身中的运行时,因此它是一个安全可靠的替代容器运行时。幸运的是,Kubernetes 项目已经记录了更改节点容器运行时的过程,并以 containerd 为例。切换到其他支持的运行时的说明类似。
我想升级 Kubernetes,并且我需要保持与 Docker 作为运行时的兼容性。我的选择是什么?
别担心,您不会被抛弃,也不必承担停留在旧版本 Kubernetes 上的安全风险。Mirantis 和 Docker 联合发布并维护着 dockershim 的替代品。该替代品称为 cri-dockerd。如果您确实需要保持与 Docker 作为运行时的兼容性,请按照项目文档中的说明安装 cri-dockerd。
就这些吗?
是的。只要您了解此版本中进行的更改以及您自己的集群的详细信息,并且确保与您的开发团队进行清晰的沟通,它将不会有太大的影响。您可能需要对您的集群、应用程序代码或脚本进行一些更改,但所有这些要求都有记录。从使用 Docker Engine 作为运行时切换到使用其他支持的容器运行时之一实际上意味着移除了中间人,因为 dockershim 的目的是访问 Docker 本身使用的容器运行时。从实际的角度来看,这种移除对您和 Kubernetes 维护人员都更有利。
如果您仍有疑问,请首先查看Dockershim 移除常见问题解答。