前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Dockershim的历史背景

Dockershim的历史背景

作者头像
CNCF
发布2022-06-10 14:11:51
3930
发布2022-06-10 14:11:51
举报
文章被收录于专栏:CNCFCNCF

作者:Kat Cosgrove

从 Kubernetes v1.24 开始,Dockershim 会给移除,这对于项目来说是个积极的举措。然而,无论是在社会上,还是在软件开发中,上下文对于完全理解某些东西都是很重要的,这值得更深入的研究。在 Kubernetes v1.24 中移除 dockershim 的同时,我们在社区中看到了一些困惑(有时达到恐慌的程度),和对这一决定的不满,很大程度上是由于缺乏关于这移除的上下文。弃用并最终将 dockershim 从 Kubernetes 移除的决定,并不是迅速或轻率做出的。尽管如此,它已经操作了很长时间,以至于今天的许多用户都比这个决定更新,当然也比导致 dockershim 首先成为必要的选择更新。

那么,dockershim 是什么,为什么它会消失?

在 Kubernetes 的早期,我们只支持一个容器运行时。那个运行时是 Docker Engine。当时,没有太多其他选择,Docker 是处理容器的主要工具,所以这不是个有争议的选择。最终,我们开始添加更多的容器运行时,比如 rkt 和 hypernetes,很明显 Kubernetes 用户希望选择最适合他们的运行时。因此 Kubernetes 需要种方法,来允许集群操作者灵活地使用他们选择的任何运行时。

发布CRI[1](Container Runtime Interface,容器运行时接口)就是为了提供这种灵活性。CRI 的引入对项目和用户来说都很棒,但它也引入了一个问题:Docker Engine 作为容器运行时的使用早于 CRI,Docker Engine 与 CRI 不兼容。为了解决这个问题,引入了一个小软件垫片("shim",dockershim)作为 kubelet 组件的一部分,专门用于填补 Docker Engine 和 CRI 之间的空白,允许集群运营商继续使用 Docker Engine 作为他们的容器运行时,基本上不会给中断。

然而,这个小小的软件垫片从来就不是永久的解决方案。多年来,它的存在给 kubelet 本身带来了许多不必要的复杂性。由于这个垫片,Docker 的一些集成实现不一致,导致维护人员的负担增加,并且维护特定于供应商的代码不符合我们的开源理念。为了减少这种维护负担,并向一个支持开放标准的更具协作性的社区发展,KEP-2221 获引入[2],它建议去掉 dockershim。随着 Kubernetes v1.20 的发布,这一弃用成为正式。

我们没有很好地传达这一点,不幸的是,弃用声明导致了社区内的一些恐慌。对于 Docker 作为一家公司来说这意味着什么,由 Docker 构建的容器镜像能否运行,以及 Docker Engine 实际是什么导致了社交媒体上的一场大火。这是我们的过失;我们应该更清楚地沟通当时发生了什么以及原因。为了解决这个问题,我们发布了一个博客[3]和相关的常见问题[4],以减轻社区的恐惧,并纠正一些关于 Docker 是什么,以及容器如何在 Kubernetes 中工作的误解。由于社区的关注,Docker 和 Mirantis 共同同意以cri-docker[5]的形式继续支持 dockershim 代码,允许你在需要时继续使用 Docker Engine 作为你的容器运行时。为了让那些想尝试其他运行时(如 containerd 或 cri-o)的用户感兴趣,编写了迁移文档[6]

我们后来对社区进行了调查[7],发现仍然有许多用户有问题和顾虑[8]。作为回应,Kubernetes 维护者和 CNCF 致力于通过扩展文档和其他程序来解决这些问题。事实上,这篇博文就是这个计划的一部分。随着如此多的最终用户成功地迁移到其他运行时,以及文档的改进,我们相信现在每个人都有了迁移的道路。

无论是作为工具还是作为公司,Docker 都不会消失。它是云原生社区和 Kubernetes 项目历史的重要组成部分。没有他们我们不会有今天。也就是说,从 kubelet 中移除 dockershim 最终对社区、生态系统、项目和整个开源都有好处。这是我们所有人一起支持开放标准的机会,我们很高兴在 Docker 和社区的帮助下这样做。

参考资料

[1]

CRI: https://kubernetes.io/blog/2016/12/container-runtime-interface-cri-in-kubernetes/

[2]

KEP-2221 获引入: https://github.com/kubernetes/enhancements/tree/master/keps/sig-node/2221-remove-dockershim

[3]

博客: https://kubernetes.io/blog/2020/12/02/dont-panic-kubernetes-and-docker/

[4]

常见问题: https://kubernetes.io/blog/2020/12/02/dockershim-faq/

[5]

cri-docker: https://www.mirantis.com/blog/the-future-of-dockershim-is-cri-dockerd/

[6]

迁移文档: https://kubernetes.io/docs/tasks/administer-cluster/migrating-from-dockershim/change-runtime-containerd/

[7]

调查: https://kubernetes.io/blog/2021/11/12/are-you-ready-for-dockershim-removal/

[8]

问题和顾虑: https://kubernetes.io/blog/2022/01/07/kubernetes-is-moving-on-from-dockershim


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

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

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 参考资料
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档