发布信息

为何弃用docker kubernetes (为何弃用王曼昱)

     2024-10-22 13:46:44     422

本文目录导航:

kubernetes 为何弃用docker?

在Kubernetes中弃用Docker?这听起来像是2020年十分抢手的一条消息。

虽然Docker是容器的同义词,但很多人没无看法到作为一个产品,Docker是由多个组件组成的,是一个容器的技术栈。

其中一个组件是容器运转时,是kubernetes与容器交互须要的。

容器运转时可以拆分红high-level运转时和low-level运转时两局部。

两者作用不同,但上班在一块。

high-level运转时关键担任比如从仓库拉取镜像、治理镜像、和处置镜像到low-level运转时的上班。

low-level运转时将依据镜像详细担任创立、删除和运转容器。

high-level和low-level运转时都遵照特定的规范:容器运转时接口(CRI)和开明容器规范协定(OCI)。

容器运转时接口(CRI)是在Kubernetes 1.5中作为alpha版本引入的。

CRI的指标是使Kubernetes生态系统更具可裁减性,为开发人员提供Kubernetes将如何与运转时交互的蓝图。

开发人员如何实践设计和成功运转时齐全取决于他们,只需满足接口。

作为集群保养者,CRI的规范化准许咱们选择在咱们的环境中经常使用哪个容器运转时。

这也使得Kubernetes变得愈加灵敏,由于它如今不须要咱们把握每种特定的运转时。

以后可用的两个盛行容器运转时是containerD和CRI-O。

开明容器规范协定 (OCI)于2015年由Container畛域的指导者动员,他们以为构建容器镜像的模式应该规范化。

依据OCI规范构建的镜像将与任何容器运转时适配,只需运转时遵照并合乎OCI规范。

因此,无论你是用docker还是podman构建容器映像,你的容器镜像都将兼容多个规格,并继续在你的集群中运转。

一些干流的OCI运转时有runC、Kata容器(英特尔Clear Containers和Hyper RunV名目)和Gvisor(goole名目)。

如今让咱们从新回到主题Docker以及它被弃用的要素。

Docker知道如何与容器交互,由于它经常使用ContainerD作为它的high-level运转时,经常使用runC作为它的low-level运转时,这两个运转时都位于Docker的多个内层组件中,并被形象化给用户。

虽然ContainerD和runC都是遵照CRI和OCI规范,咱们也会遇到一个疑问,由于Docker自身不能满足CRI的要求,而CRI是Kubernetes须要与运转时交互的。

随着Dockershim的引入,这个疑问获取了处置。

Dockershim作为Kubernetes和Docker之间的两边件,并且兼容CRI。

但是,Dockershim的一个缺陷是,你正在加载整个Docker堆栈,并让Kubernetes与shim通讯,shim而后与Dock通讯,docker经过调用栈直到它抵达containerD。

这在容器上班流程中参与了不用要的步骤,由于Kubernetes可以间接与containerD或任何其余CRI兼容的运转时交互。

经常使用Dockershim原本是一种暂时的处置计划,但它缓缓地变成了一种累赘,因此不得不弃用它。

总之,Kubernetes须要一种与容器交互的模式。

这是由处置容器生命周期的容器运转时处置的。

Kubernetes可以与任何容器运转时交互,假设它们合乎容器运转时接口(container runtime Interface),该接口定义了Kubernetes将如何与提供的运转时交互。

此外,一切的镜像/容器和运转时必定遵照OCI,它定义了如何创立镜像或容器。

至于Docker,它是一个形象了一个容器运转时的技术栈,不合乎CRI。

既然有了 Docker,为什么还要 Kubernetes?

“一千个读者眼里有一千个哈姆雷特”。

雷同的话也实用于 Kubernetes,雷同的系统在不同的开发人员眼中也是不同的,甚至在不同阶段关于它的了解也一模一样。

在尚未开局经常使用Kubernetes之前,我以为它是一套十分复杂的系统,各种形象概念以及复杂的装置环节。

差点由于装置不顺,计划就此丢弃。

理由很便捷: 既然有了 Docker,为什么还要 Kubernetes ?

之所以觉得Kubernetes系统复杂、难,关键是不知道它究竟是干啥的?再加上老版本繁琐的装置环节,情愿啃它是须要一点毅力的。如今,就经过一张便捷的对比图通知你,它究竟干了啥!

单看图示上局部,出现的变动仅仅是HOST换成了POD,底层网络由实在网络换成了笼罩网络,即虚构网络。

关于APP运行开发者而言, 即使你齐全疑问容器技术也没相关.这是Kubernetes的凶猛之处,它提供的形象层关于APP运行开发者而言是齐全透明的。

运行在POD中和在HOST服务器上并没有实质区别。

kubernetes

还是老疑问: 既然有了 Docker,为什么还要 Kubernetes ?

回答这个疑问,得从为什么须要引入Docker这个疑问先开局。

你会说,由于须要 容器化部署 。

那为什么须要 容器化部署 呢?就这个疑问还可以走得更远一点。

这里我就偷懒了,先打住。

看看 容器化部署 后出现的新疑问,即容器实例越来越多。

由于容器实例越来越多,就像鸡蛋太多须要一个篮子来装一样,Kubernetes就是那个篮子。

当然这不是一个便捷的篮子,此处也不裁减了。

规范答案就是: 由于有了 Docker,所以才要Kubernetes 。

是不是觉得进入一个loop,我也这觉得。

从图中也可以看出,Docker容器技术是Kubernetes平台的基础。

容器技术关键作用是 隔离 ,经过对系统的关键资源的隔离,成功了 服务器形象 。

Kubernetes平台则是在 形象服务器 的基础上,成功了 集群形象 。

用一句话做个总结,就是:

一篇短文,宿愿可以帮到还徘徊在Kubernetes大门之外的初学者。

当然,新版本Kubernetes曾经十分容易装置了。

docker和k8s的相关

Docker和Kubernetes是互补的技术,理论一同经常使用以构建、部署和治理容器化运行。

一、Docker与Kubernetes的互补性

Docker是一种容器化技术,用于打包、部署和运转运行。

它创立的是轻量级的、可移植的容器,这些容器蕴含运转运行所需的一切资源。

而Kubernetes是一个开源的容器编排平台,用于智能化部署、裁减和治理容器化运行。

它可以轻松处置多个Docker容器之间的依赖相关,成功运行的智能化部署和弹性伸缩。

因此,Docker和Kubernetes联合经常使用可以极大地简化容器化运行的开发和运维环节。

二、Docker与Kubernetes的协同上班

Docker提供了容器的运转环境,而Kubernetes则提供了一个集群环境,可以在其中运转和治理多个Docker容器。

在Kubernetes中,Docker作为容器运转时被经常使用。

开发者可以经常使用Docker构建运行镜像,而后将这些镜像部署到Kubernetes集群中。

在集群中,Kubernetes可以治理这些容器的生命周期,包括部署、裁减、观测和日志治理等。

经过这种模式,Docker和Kubernetes独特提供了从运行开发到消费环境的完整处置计划。

三、总结

简而言之,Docker和Kubernetes是相互单干的相关。

Docker提供了单个容器的创立和运转环境,而Kubernetes则提供了治理这些容器的平台,包括集群治理、智能裁减、服务发现等配置。

两者联合经常使用,可以大大提高开发者的消费效率和运行的牢靠性。

在现代云原生运行的开发中,熟练把握Docker和Kubernetes是十分关键的技艺。

相关内容 查看全部