一切都是那么平静地开始的。在即将到来的https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.20.md不推荐“target=”noopener noreferrer nofollow“data component=”externalLink“>Kubernetes 1.20发行说明,Kubernetes,大家最喜欢的容器编排器,开发商宣布:“kubelet中的Docker支持现在已被弃用,并将在将来的版本中删除。”您可能会从喧嚣中认为有人踢了你的小狗。别紧张。
是的,库贝尔让“dockershim”模块,实现了容器运行时接口(CRI)支持码头工人,很快就会成为历史。那又怎么样?这没什么大不了的。
Docker,你看,是很多东西。
正如Kelsey Hightower,谷歌云平台开发人员的倡导者和最著名的万事通教师Kubernetes所说,推特:“a href=”https://twitter.com/kelseyhightower/status/1334531052488904707“target=”\u blank“rel=”noopener noreferrer“data component=”externalLink“>Docker!=容器。有容器图像。Docker可以建造它们。有集装箱登记处。码头工人可以推拉他们。存在容器运行时。多克就是其中之一。有容器进程。Docker可以创建它们,但Linux仍然是老大https://kubernetes.io/blog/2020/12/02/dont-panic-kubernetes-and-docker/“target=”noopener noreferrer nofollow“data component=”externalLink“>不要惊慌:Kubernetes和Docker”博客文章,所发生的一切就是Kubernetes不赞成将Docker作为v1.20之后的容器运行时。您仍然可以构建容器,在注册表中使用它们,以及推拉。所发生的一切就是Docker,因为底层运行时正被弃用,转而支持CRI运行时。Docker生成的图像将继续在您的集群中工作,就像它们一直以来一样。
简而言之,这不是——我重复——不是什么大不了的。
部分的困惑源于人们使用“Docker”来表示很多不同的东西。在Kubernetes集群中,容器运行时的任务是拉取并运行容器映像。Docker是那个运行时的一个流行选择,但是Docker并不是为了嵌入Kubernetes而设计的,这会导致问题。
正如程序员所观察到的,“我们称之为‘Docker’的东西实际上并不是一回事——它是一个完整的技术堆栈。”Docker为程序员提供了许多用户增强功能,但Kubernetes并不需要这些功能。Dockershim的工作是只提取运行时。剩下的就是这么多不需要和不受欢迎的代码,打开了更大的攻击面,需要维护。
此外,Docker不符合CRI。”如果是的话,我们就不需要垫片了,这也不是一件事。开发人员只需将容器运行时从Docker更改为受支持的容器运行时。其实并不难。
Docker运行时的这种改变已经出现了一段时间了。今天,关于使用哪个运行时的争论在containerd和CRI-O。在“运行时”和“容器”下找到https://www.docker.com/blog/runc/“target=”noopener noreferrer nofollow“data component=”externalLink“>运行c。
正如Hightower在后来的一篇文章中所说,“没有任何变化。继续使用Docker。Kubernetes只利用了Docker运行时能力的一小部分。事实上,两者都可以利用containerd和runc来管理底层进程。容器图像是可移植的。如何构建和运行它们取决于您。”
Docker同意。Docker的产品管理高级主管Dieu Cao在一篇帖子中解释道:“如果实际上,您正在使用Docker,您已经在使用containerd”,“Docker在2016年与谷歌和IBM一起创建了containerd项目,目标是实现这一转型。docker shim(和docker Engine作为运行时)的弃用标志着为Kubernetes提供现代运行时的长期承诺已经完成。“
Cao继续说,”使用docker工具构建的容器映像将继续在Kubernetes上运行。Buildkit,我们的下一代构建基础设施具有灵活的体系结构,因此,它可以作为Docker的构建器使用,它还可以直接与containerd或runc通信,而不是在Docker可能不可用的基础设施中使用。“
明白了吗?放松点。呼吸。您仍然可以使用Docker为Kubernetes创建容器。如果您使用containerd或CRI-O在Kubernetes中运行它们,那么唯一的改变就是。很有可能你已经在做了,但是你没有意识到。作为t他Dockershim弃用常见问题解答说,“1.20版本中唯一的变化是打印在kubelet如果使用Docker作为运行时,“
Dockershim将一直坚持到2021年末库伯内特斯1.23。Kubernetes团队将与每个人密切合作,以确保我们都站在同一个页面上,在每个人都准备好进行更改之前,dockershim不会被放在牧场上。
LinuxFoundation的入门级IT管理员认证已开放注册通过注册返回
,您同意
2023-03-22 10:04:24