关于Docker、Docker Engine以及Kubernetes v1.20,开发人员需要了解的一切


Kubernetes的最新版本Kubernetes v1.20.0-rc.0现已正式发布。Kubernetes项目计划弃用kubelet中的Docker引擎支持,而且对于dockershim的支持也将在下个版本(可能是明年下半年)中消失。但请不必担心,你仍然可以使用Docker工具正常构建容器镜像,而且镜像使用不会受到任何影响。

对于Docker及Kubernets用户,这究竟意味着什么?

首先,不必惊慌。开发者们仍然可以使用Docker平台在Kubernetes上构建、共享及运行容器!此番变化影响到的主要是Kubernetes上的运营人员与管理员,对开发者工作流程几乎没有丝毫变更。Docker构建的镜像仍然符合OCI(开放容器倡议),因此将受到全面支持并能够继续在Kubernetes上顺畅运行。

如果你使用Docker,则代表你已经在使用containerd。我们在containerd基础之上构建起Docker运行时,并努力为其赋予出色的开发者使用体验。对于Kubernetes这类容器运行时越少越好的生产环境,也有不少用户会选择直接使用containerd等轻量化运行时。

Docker于2016年联手谷歌与IBM共同打造了containerd项目,当时它的亮相也引发了一场重要转变。而此次弃用dockershim(以及Docker Engine作为运行时的功能定位)标志着我们终于全面完成了为Kubernetes提供现代运行时的长期承诺。最初,Containerd被定位为Docker与Kubernetes的底层核心可扩展运行时,希望配合二者达成多种实际用途。

Containerd于2017年被捐赠给云原生计算基金会(CNCF),随后发展出的containerd CRI项目能够与Kubernetes进行交互,也逐步吸引到来自亚马逊、Google、微软以及IBM乃至整个行业的大量创新支持与资源投入。

2019年,containerd成为云原生计算基金会毕业项目,而且时至今日其仍是唯一达到这样成熟性高度的容器运行时。过去几年以来,各大领先Kubernetes服务供应商(例如AWS与谷歌)都已经将containerd指定为其Kubernetes运行时。而此次弃用过程,又再次反映出containerd迅猛的发展态势、及其背后活跃技术社区获得的巨大成功。

仍将正常支持你使用Docker工具创建的容器镜像

你使用Docker工具所构建的容器镜像仍将继续在Kubernetes上正常运行。作为我们的下一代构建基础设施,Buildkit拥有灵活的架构,既能够作为Docker构建器,也可以直接与containerd或者runC进行通信。很明显,它不可能脱离Docker在基础设施中独立存在。

Docker致力于推动containerd的发展:我们将继续与持续增长的buildkit社区投入资源,帮助大家在任何基础设施托管场景内使用Docker解决方案。

你可以继续在本地及Kubernetes集群中构建并运行Docker镜像,本次弃用不会对此产生任何影响。

那么,Kubernetes项目是要弃用什么?

Kubernetes本次弃用的是dockershim,即Kubernetes kubelet实现中的组件之一。它能够与Docker Engine进行通信。

我们需要如何应对?

在目前的Kubernetes 1.20版本中,Kubernetes管理员可以继续使用Docker命令与kubectl命令管理自己的Kubernetes集群。

在未来发布的Kubernetes版本中,包括接下来陆续推出的次要版本,对于dockershim的支持将最终被删除,届时你将无法使用Docker命令检查自己的集群。

好消息是,其中大部分命令都能在kubectl与ctr(containerd CLI)中找到替代选项。尽管未来在Kubernetes中检查集群的操作命令可能有所变化,但开发人员仍然可以使用Docker工具在Kubernetres上对容器及容器镜像执行docker build、docker push以及docker run。

原文链接:What developers need to know about Docker, Docker Engine, and Kubernetes v1.20

0 个评论

要回复文章请先登录注册