KubernetesvsDocker:2021年容器有哪些变化_第1页
KubernetesvsDocker:2021年容器有哪些变化_第2页
KubernetesvsDocker:2021年容器有哪些变化_第3页
KubernetesvsDocker:2021年容器有哪些变化_第4页
KubernetesvsDocker:2021年容器有哪些变化_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

KubernetesvsDocker:2021

年容器有哪些变化前言几个星期前,Kubernetes开发团队宣布,他们正在弃用docker。这则新闻通过科技界和社交网络广为流传。Kubernetes群集是否会中断,如果是,我们将如何运行我们的应用程序?我们现在该怎么办?今天,我们将审查所有这些问题和更多。让我们从头开始。如果你已经熟悉docker和kubernetes,并希望直接了解关键信息,跳到docker弃用对你有什么影响?什么是容器?尽管Docker被用作容器的同义词,但现实情况是,它们早在docker成为东西之前就已经存在了。Unix和Linux自70年代末开始引入chroot以来,一直有某种形式的容器。Chroot允许系统管理员在一种但并非真正孤立的文件系统中运行程序。后来,这个想法被提炼和增强到集装箱引擎,如免费BSDJails,OpenVZ,或LinuxContainers(LXC)。但是什么是容器呢?容器是一个逻辑分区,我们可以运行与系统其余部分分离的应用程序。每个应用程序都有自己的专用网络和不与其他容器或主机共享的虚拟文件系统。

ContainerRuntimeContainerContainerContainerContainerHostOperatingSystemContainerRuntimeContainerContainerContainerContainerHostOperatingSystem运行容器应用程序比安装和配置软件方便得多。首先,容器是便携式的:我们可以在一台服务器中构建,并相信它将在任何服务器中工作。另一个优点是,我们可以同时运行同一程序的多个副本,而不会发生冲突或重叠,否则确实很难做到。然而,要使这一切发挥作用,我们需要一个容器runtime,一个能够运行容器的软件。什么是Docker?什么是docker?docker是最受欢迎的容器runtime-从长远来看。这并不奇怪,因为它将容器的概念引入主流,这反过来又激发了像Kubernetes这样的平台的创建。在Docker之前,运行容器确实是可能的,但这是艰苦的工作。Docker使事情变得简单,因为它是一个完整的技术堆栈,可以:管理容器生命周期。代理请求来回容器。监视和记录容器活动。安装共享目录。对容器设置资源限制。生成镜像。Dockerfile是构建容器镜像的格式文件。从注册处推送和拉取图像。在第一次迭代中,Docker使用Linux容器(LXC)作为运行时间后端。随着项目的发展,LXC被容器所取代,docker自己的实施。现代docker安装分为两个服务:containerd,负责管理容器;dockerd,处理剩余的部分。

什么是Kubernetes?kubernetes采取容器的想法,并把它一个缺口。Kubernetes不是在单个服务器中运行容器化应用程序,而是将其分布在一组机器上。在Kubernetes中运行的应用程序的外观和行为都像一个单元,尽管在现实中,它们可能由松散耦合的容器排列而成。Kubernetes在容器顶部添加分布式计算功能:吊舱:吊舱是共享内存、CPU、存储和网络等资源的逻辑容器组。自动缩放:Kubernetes可根据需要启动和停止吊舱,从而自动适应不断变化的工作负载。自我修复:容器在故障时被监控并重新启动。负载均衡:请求分布在健康的可用吊舱上。推出:kubernetes支持自动推出和回滚。使Canary和Blue-Green等复杂程序变得微不足道。我们可以将Kubernetes的架构视为两架飞机的组合:控制面板是集群的协调大脑。它有一个控制器,管理节点和服务,调度器分配吊舱的节点,和API服务,处理通信。配置和状态存储在一个高度可用的数据库称为etcd。工人节点是运行容器的机器。每个工人节点运行几个组件,如kubelet代理、网络代理和容器运行时。Kubernetes版本v1.20的默认容器运行时是Docker。

ContainerCC&ntain&rB容器格式ControlPlaneContainerRuntimeWorkerNodeWorkerNodeControllerSchedulerkubeletproxyAPIserverkubeletproxyContainerRuntimeContain"APodContainerCC&ntain&rB容器格式ControlPlaneContainerRuntimeWorkerNodeWorkerNodeControllerSchedulerkubeletproxyAPIserverkubeletproxyContainerRuntimeContain"APod1在启动容器之前,我们需要构建或下载一个容器镜像,这是一个文件系统,里面装满了应用程序所需的一切:代码、二进制文件、配置文件、库和依赖项。容器的普及表明需要开放的镜像标准。因此,Docker公司和CoreOS于2015年建立了开放式容器计划(OCI),其使命是生产供应商中立格式。这一努力的结果是创造了两项标准:定义镜像二进制格式的镜像规范。描述如何拆开和运行容器的运行时规范。OCI维护称为runc的参考实现。容器和cri-o都使用背景中的流体生成容器。OCI标准带来了不同容器解决方案之间的互操作性。因此,一个系统内置的图像可以在任何其他合规堆栈中运行。OCI标准带来了不同容器解决方案之间的互操作性。因此,一个系统内置的镜像可以在任何其他合规堆栈中运行。DockervsKubernetes这里是事情变得更加技术性的地方。我说每个Kubernetes工人节点都需要一个容器运行时。在其第一个原始设计,Docker是离不开Kubernetes,因为它是唯一的运行时支持。然而,Docker从未被设计成在Kubernetes内运行。意识到这个问题,Kubernetes开发人员最终实现了一个名为容器运行时间接口(CRI)的API。此界面允许我们在不同的容器运行时之间进行选择,使平台更加灵活,对Docker的依赖性更小。

这一变化给Kubernetes团队带来了新的困难,因为Docker不知道CRI或支持CRI。因此,在引入API的同时,他们不得不编写一个名为Dockershim的适配器,以便将CRI消息转换为Docker特定命令。弃用Dockershim虽然Docker是一段时间以来第一个也是唯一支持的引擎,但是它从来不在长期计划内。160皿0土0$V1.20弃用了dockershim,拉开了离开docker的过渡的序幕。一旦过渡完成,堆栈就会变小得多。它从这个:厂(contaLi-r1] cri , -、kubelet *containerd-<iContainer1)L[C-ntaineri]结果是每个工人节点所需的膨胀更少,依赖性也更少。那么,为什么要改变呢?简单地说,Docker很重。我们得到更好的性能与轻量级集装箱运行时,如容器或CRbO。最近的例子是,谷歌的基准显示,容器消耗的内存和CPU更少,而吊舱的启动时间也比Docker少。止匕外,在某些方面,Docker本身可以被认为是技术债务。事实上,Kubernetes需要的是容器运行时:容器。其余的,至少就Kubernetes而言,是额外的开销。Kubernetes弃用Docker对你有什么影响?事情并不像听起来那么戏剧化。让我们在整节的开头说,在v1.20中唯一改变的是,你会得到一个弃用警告,只有当你运行Docker。就这样。我还能使用Docker进行开发吗?是的,你绝对可以,现在和在可预见的未来。你看,Docker不运行Docker特定的镜像:它运行符合OCI标准的容器。只要Docker继续使用这种格式,Kubernetes将继续接受它们。我仍然可以用Docker打包我的生产应用程序吗?是的,原因与上一个问题相同。与Docker打包的应用程序将继续运行-那里没有变化。因此,您仍然可以使用您了解和喜爱的工具构建和测试容器。您不需要更改CI/CD管道或切换到其他镜像注册,Docker制作的镜像将继续像始终一样在群集中工作。我需要改变什么?现在什么都没有如果您的群集使用Docker作为运行时,则升级到v1.20后将获得弃用警告。但这一变化是Kubernetes社区发出的一个明确信号,表明他们想采取的方向。是时候开始规划未来了。变革何时发生?该计划是在2021年底将所有Docker依赖关系完全删除v1.23。当Kubernetes离开时,会发生什么?届时,Kubernetes集群管理员将被迫切换到符合CRI标准的容器运行时。如果你是一个最终用户,没有很多变化给你。除非你运行某种节点自定义,否则你可能不必做任何特别的事情。仅测试您的应用程序与新的容器运行时配合使用。这些是升级到v1.23后会导致问题或中断的一些事情:使用Docker特定的日志记录和监视。即,从日志中解析Docker消息或投票DockerAPI。使用Docker优化。运行依赖dockerCLI的脚本。运行docker命令在特权吊舱。例如:构建镜像。有关替代解决方案,请参阅卡尼科等项目。dockerbuild使用docker工人设置。运行窗口容器。容器确实在Windows中工作,但它的支持水平还没有达到Docker的。目标是通过集装箱版本1.20为Windows提供稳定的容器释放。如果您在AWSEKS、GoogleGKE或AzureAKS等云提供商上使用托管集群,请在Docker支持消失之前检查您的集群是否使用了支持的运行时。有些云供应商落后几个版本,因此您可能有更多的时间来计划。因此,请咨询您的提供商。举个例子,谷歌云宣布,他们正在改变默认运行时从Docker到容器的所有新创建的工人节点,但你仍然可以选择Dockero如果您运

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论