不要惊慌:Kubernetes和Docker

作者:Jorge Castro, Duffie Cooley, Kat Cosgrove, Justin Garrison, Noah Kantrowitz, Bob Killen, Rey Lejano, Dan " POP " Papandrea, Jeffrey Sica, Davanum " Dims " Srinivas

Kubernetes将在1.20版本之后放弃对Docker的支持。

你不需要惊慌。这并不像听起来那么戏剧化。

Docker作为底层运行时正在被弃用,取而代之的是使用为Kubernetes创建的容器运行时接口(CRI)的运行时。Docker生成的映像将继续在您的集群中与所有运行时一起工作,就像它们一直那样。

如果您是Kubernetes的最终用户,那么不会有太多的变化。这并不意味着Docker的消亡,也不意味着您不能或不应该再使用Docker作为开发工具。Docker仍然是构建容器的有用工具,运行Docker build产生的映像仍然可以在Kubernetes集群中运行。

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

如果您在滚动自己的集群,您还需要进行更改,以避免集群崩溃。在v1.20,您将收到Docker的弃用警告。当Docker运行时支持在Kubernetes的未来发行版(目前计划在2021年底的1.22发行版)中被移除时,它将不再受支持,您将需要切换到其他兼容的容器运行时,比如containerd或CRI-O。只要确保你选择的运行时支持你当前使用的docker守护进程配置(例如日志)。

为什么会有这种困惑呢?每个人都在担心什么呢?

我们在这里讨论的是两种不同的环境,这就造成了混淆。在Kubernetes集群中,有一个称为容器运行时的东西,它负责提取和运行容器映像。Docker是该运行时的流行选择(其他常见选项包括containerd和crii - o),但是Docker并没有被设计成嵌入到Kubernetes中,这就导致了一个问题。

你看,我们称为“Docker”的东西实际上并不是一个东西——它是一个完整的技术堆栈,其中一部分是一个叫做“containerd”的东西,它本身是一个高级的容器运行时。Docker很酷,也很有用,因为它有很多UX增强,使得在我们进行开发工作时很容易与人交互,但是这些UX增强对Kubernetes来说不是必需的,因为它不是人。

由于有了这个对人友好的抽象层,您的Kubernetes集群必须使用另一个称为Dockershim的工具来获得它真正需要的东西,它包含在其中。这不太好,因为它给了我们另一个需要维护的东西,而且可能会损坏。这里实际发生的是,Dockershim早在v1.23版本就从Kubelet中删除了,从而取消了对Docker作为容器运行时的支持。您可能会想,如果containerd包含在Docker堆栈中,为什么Kubernetes需要Dockershim呢?

Docker与CRI(容器运行时接口)不兼容。如果是的话,我们就不需要垫片了,这就不成问题了。但这并不是世界末日,您也不必惊慌——您只需要将容器运行时从Docker更改为另一个受支持的容器运行时。

需要注意的一点是:如果你现在在集群中依赖底层docker套接字(/var/run/docker.sock)作为工作流程的一部分,迁移到不同的运行时将会破坏你使用它的能力。这种模式在Docker中通常称为Docker。对于这个特定的用例,有很多选择,包括kaniko、img和buildah。

这种变化对开发人员意味着什么呢?我们还在写dockerfile吗?我们还用Docker做东西吗?

这一改变解决了一个与大多数人使用Docker进行交互的不同环境。您在开发中使用的Docker安装与Kubernetes集群中的Docker运行时无关。我知道这很令人困惑。作为一名开发人员,Docker仍然对您很有用,就像在这项更改宣布之前一样。Docker生成的映像实际上并不是一个特定于Docker的映像——它是一个OCI (Open Container Initiative)映像。无论您使用什么工具构建它,任何符合oci的映像在Kubernetes看来都是一样的。containerd和crio都知道如何提取这些映像并运行它们。这就是为什么我们有一个容器应该是什么样的标准。

所以,这种变化正在到来。这会给一些人带来问题,但这不是灾难性的,而且一般来说这是件好事。取决于您如何与Kubernetes交互,这可能对您毫无意义,也可能意味着需要进行一些工作。从长远来看,这会让事情变得更简单。如果这仍然让你感到困惑,那也没关系——这里发生了很多事情,Kubernetes有很多活动的部分,没有人是100%的专家。我们鼓励任何和所有的问题,无论经验水平或复杂性!我们的目标是确保每个人都尽可能多地了解即将到来的变化。我们希望这已经回答了你的大部分问题,缓解了你的一些焦虑!

想知道更多答案吗?请查看我们附带的Dockershim Deprecation FAQ。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值