不要惊慌:Kubernetes和Docker

作者: 豪尔赫·卡斯特罗,达菲·库里,凯特·科斯格罗夫,贾斯汀·加里森,诺亚·坎特罗维茨,鲍勃·基伦,雷伊·莱亚诺,丹·POP·帕潘德里亚,杰弗里·西卡,达万姆·斯里尼瓦斯

Kubernetes是 弃用 Docker v1.20之后的容器运行时。

您无需惊慌。它不像听起来那样具有戏剧性。

TL; DR不推荐使用Docker作为基础运行时,而推荐使用运行时 that use the 容器运行时接口(CRI) 为Kubernetes创建。 码头工人产生的映像将继续在您的服务器中工作 像往常一样将所有运行时群集在一起。

如果您是Kubernetes的最终用户,则不会为您带来很多改变。 这并不意味着Docker的死亡,也不意味着您不能,或者 不应再使用Docker作为开发工具。 码头工人仍然有用 tool for building containers, 和 the images that result from running docker build can still run in your Kubernetes cluster.

如果您使用的是托管的Kubernetes服务,例如GKE,EKS或AKS( 默认为容器),您需要 确保您的工作节点在使用受支持的容器运行时之前 在将来的Kubernetes版本中将删除Docker支持。如果您有节点 您可能需要根据环境和运行时对其进行更新, 要求。请与您的服务提供商合作以确保正确升级 测试和计划。

如果您要滚动自己的集群,则还需要进行更改以避免 你的集群破裂。在v1.20,您将收到Docker弃用警告。 在将来的版本中删除Docker运行时支持时(当前已计划 对于2021年末的1.22版本)将不再受支持 并且您将需要切换到其他兼容的容器运行时之一, 例如集装箱式或CRI-O。只要确保您选择的运行时支持 当前使用的docker守护程序配置(例如日志记录)。

那么,为什么会感到困惑?每个人都害怕什么呢?

我们在这里谈论的是两种不同的环境 混乱。在Kubernetes集群内部,有一个叫做容器的东西 运行时负责提取和运行您的容器图片。码头工人 是该运行时的流行选择(其他常见选项包括容器 和CRI-O),但Docker并非旨在嵌入Kubernetes中,并且 导致问题。

您会看到,我们称为“ 码头工人”的东西实际上不是一件事,而是整个 技术堆栈,其中一部分就是所谓的“容器”,这是 高级容器运行时本身。 码头工人很酷且有用,因为它具有 大量的UX增强功能,使人类与之交互变得非常容易 虽然我们正在进行开发工作,但是这些UX增强功能不是必需的 对于Kubernetes,因为它不是人类。

由于这个人类友好的抽象层,您的Kubernetes集群 必须使用另一个名为Dockershim的工具来了解其真正的需求, 已装箱。那不是很好,因为它给我们带来了另一件事 保持原状并可能损坏。这里实际发生的是 早在v1.23版本中,Dockershim就已从Kubelet中删除, 结果删除了对Docker作为容器运行时的支持。你可能是 想一想,但是如果容器包含在Docker堆栈中,为什么 Kubernetes是否需要Dockershim?

码头工人不符合CRI, 容器运行时界面. 如果是这样,我们就不需要垫片了,这也不是什么了。但这是 而不是世界末日,并且您不必惊慌-您只需要改变 您的容器运行时从Docker迁移到另一个受支持的容器运行时。

需要注意的一件事:如果您依赖底层的Docker套接字 (/var/run/docker.sock) as part of a workflow within your cluster today, moving 到其他运行时将破坏您使用它的能力。这种模式经常 在Docker中称为Docker。针对此特定对象有很多选择 用例包括诸如 iko子, img 积木.

但是,这种变化对开发人员意味着什么?我们仍在编写Dockerfile吗?我们仍然使用Docker构建东西吗?

这种变化所带来的环境不同于大多数人用来交流的环境 使用Docker。您在开发中使用的Docker安装与以下内容无关 Kubernetes集群中的Docker运行时。我们知道这令人困惑。 作为开发人员,Docker仍然可以在此之前以所有方式对您有用 宣布变更。 码头工人产生的图像实际上不是 特定于Docker的映像-它是OCI(开放容器倡议) 图片。 任何与OCI兼容的映像,无论使用何种工具进行构建,都将看起来 Kubernetes也一样。都 装箱的CRI-O 知道如何拉出这些图像并运行它们。这是 为什么我们对容器的外观有一个标准。

因此,这种变化即将到来。这会给某些人带来问题,但不是 灾难性的,通常这是一件好事。根据您的互动方式 使用Kubernetes,这对您可能没有任何意义,或者可能意味着一些工作。 从长远来看,它将使事情变得更容易。如果这仍然令人困惑 对您来说,没关系-这里有很多事情要做; Kubernetes有很多 活动部件,没有人是100%的专家。我们鼓励所有 问题,无论经验水平或复杂性如何!我们的目标是确保 每个人都将尽可能多地接受即将发生的变化的教育。我们希望 这已经回答了您的大多数问题,并缓解了一些焦虑! ❤️

寻找更多答案?看看我们的伴随 码头工人shim弃用常见问题解答.