Kubernetes竟弃用Docker?
当Kubernetes与Docker一起使用时,Kubernetes已经被遗弃了Docker。有时,我们都必须相信什么都不会持续。即使是Kubernetes和Docker,那么最终与之使用在一起,最终与方式分开。那么为什么Docker需要Kubernetes?髌骨如何用于Kubernetes?为什么Kubernetes终于放弃了Docker?如果我们想使用与Docker的Kubernetes何时何地?让我们一起看?介绍Docker需要Kubernetes之前,让我们来看看为什么我们需要码头?在码头容器技术的出现之前,我们需要多种环境进行开发,测试和出版服务。开发环境用于开发人员编写代码,调试和自检。测试环境用于测试仪的功能测试和性能测试,并使用生产环境用于释放官方版以供用户使用。在从开发启动的过程中,我们正在处理环境。在安装环境之前,必须首先申请资源,安装操作系统,数据库,应用程序和修改配置文件以链接。这个过程非常麻烦。每个修改都必须再次重新部署。如果你改变机器,我很抱歉,那么你必须做另一轮。码头的出现解放了这个过程。 Docker封装了一组完整的环境,其中应用程序运行,包括操作系统,数据库,消息队列等。研发人员可以继续封装封装图像上的业务模块,并将其提供测试和操作和维护人员。在测试和测试时,只关注业务就很好。不同环境造成的问题不再存在。和码头容器是孤立的过程。在充分利用服务器资源的同时,没有人会影响任何人。这也是互联网巨头如Ali,Toutiao和Meituan的原因也是所有集装箱的基础设施。
在微服务架构的趋势下,服务被分成了微服务模型。为了确保高可用性,以分布式方式部署核心微服务。对于淘宝系统,它包含数千个微服务,一个节点部署一个容器,然后根据分布式群集部署,整个淘宝系统估计有数万个节点。在假期期间,节点的数量仍在增加,然后需要进行管理,否则如何保证节点之间的正常通信并快速解决问题?所以Kubernetes出生。它提供了应用程序级群集抽象,将每个MicroService摘要到服务中,运行为POD。 POD的底层是Docker,它提供外部能力。 Kubernetes,Masternode和Worknode有两部分。 Masternode是控制节点,负责调度群集资源。用户可以控制KubeControllermanager中的整个资源情况,例如执行资源创建和释放; Apiserver类似于Kubernetes网关,它接受外部的客户端调用,内部传输呼叫请求转到相应的工作室。 Worknode实际上是工作,真正运行业务应用程序,通过Kubectl接受Apiserver命令,使用ContexErruntime下载图像和运行容器。
出现问题。 Kubernetes本身并不提供容器运行时环境,但使用CRI(ContainErruntimeInterface Container Runtime接口)来创建和删除工作者节点上的容器。由于Docker不符合Kubernetes Container运行时接口标准(CRI),因此必须维护一个名为Dockershim的中间件,以便能够使用Docker作为Kubernetes Container运行时。此外,Kubernetes使用Docker容器中的CGROUP功能。不需要使用其他模块,例如网络和存储卷,但它们在Kubernetes中运行以及Docker,这容易出现安全风险。总之,这就是为什么Kubernetes被遗弃的Docker。
作为Kubernetes和Docker容器的用户,不需要恐慌,只需使用CRI运行时替代。 CRI有两种实施方案,即ContainerD和CRI-O. Contantd是CNCF云本机计算基础的开源项目。它可以直接下载并直接在github上使用(https://github.com/containerd/containerd/)。它是一个容器虚拟化技术,已从Docker剥离以形成一个开放的容器接口(OCI),集装箱引擎可以使用它来管理整个容器生命周期(创建),拉/推容器图像,存储管理图像,管理容器网络接口和网络。它出生于码头,可以做所有的运行时工作。使用它是一个不错的选择。
与集装箱相比,CRI-O并不是如此友好。它是红帽开发的纯CRI运行时。它支持Redhatopenshit更好,不支持Docker。因此,从Docker迁移到CRI-O更麻烦。 Kubernetes正式表示,作为一个完整的集装箱技术堆栈,Docker不是在创作开始时为Kubernetes设计的。 Kubernetes在V1.20之后,仅推荐使用Docker作为容器运行时。用户仍可使用Docker将来构建容器图像,并且Docker生成的图像实际上是OCI(OpenContainer Initiative)图像。可以说,无论用什么工具来构建图像,任何符合OCI标准的任何图像都在Kubernetes中看起来也是如此。 ContainerD和CRI-O可以提取这些图像并运行它们。技术升级通常是件好事,并且始终以更好的服务进行更改。无论是开发人员还是运营和维护人员,我们都需要接受改变。