网站首页 > 开源技术 正文
从文章《【系统架构】什么是容器?什么容器编排?你都知道吗?》,我们已经了解到,容器和虚拟机一样,是一种内核轻量级的操作系统层虚拟化技术,它可以在操作系统之上搭建一套独立的运行环境,而不受其他进程干扰。不同的是,虚拟机需要虚拟出自己的OS和hypervisor,而容器却不需要。
容器的底层完全依赖宿主机,它比虚拟机更轻量,性能更好,更易于移植。也正是因为这些原因,近年来容器被广泛应用于生产中。据 CNCF 发布的 2019 年度调查报告显示,2016 年和 2018 年容器的使用率分别是 23% 和 73%,到了 2019 年,这一比例已经上升到了 84%。
容器的出现帮我们解决了很多问题,但是当容器数量达到一定规模时,你也会发现会有新的问题产生,比如,如何高效地管理成百上千的容器。此时,你不可能像维护单一容器那样维护成百上千的容器,因为如果是那样,维护容器将是一件非常繁琐的,甚至是不可完成的事情。
容器编排
为解决上面说的维护容器的问题,人们开发出了容器编排工具。最开始,业内能够称得上容器编排平台的只有 Kubernetes,也即是K8S。Swarm 和 Mesos 虽然也可以承担一部分容器编排的工作,但是一个需要 Compose 和 Docker Machine 等工具的配合,一个需要编排工具和组件服务的配合。
不过,Kubernetes “独步天下”的局面没有持续很久,在容器编排平台领域就出现了一个竞争者——DC/OS。DC/OS 是 D2iQ 公司(原名:Mesosphere)牵头开源的一个项目,其核心是基于 Mesos 实现的,可以集中基础设施资源,并实现跨多个分布式应用来共享资源。
如何选型:DC/OS 还是 Kubernetes?
DC/OS 和 Kubernetes 都可以进行容器编排,但各有各的最佳使用场景。在企业实际生产环境中,技术选型可分多种情况,下面从集群规模、工作负载和复杂度三个方面来看看选型结果。
第一,大集群选 DC/OS,小集群选 Kubernetes
我们可以把集群规模分为集群数量和单个集群规模两个部分来谈论。
集群数量指的是集群中虚拟机或实体机的数量,包括开发、测试、生产以及其它业务。一般以 500 个集群为界限,如果超过 500,就可以认为是大集群,应该选择 DC/OS;如果少于 500,那么就认为是中小集群,更适合选择 Kubernetes。
单个集群规模指的是在单个集群中的节点数量,一般来说,如果单集群节点为 8-10 个,建议使用 Kubernetes,而单集群节点超过 100,则建议使用 DC/OS。
第二,多定制使用 DC/OS,少定制使用 Kubernetes
从工作负载的角度来看,如果是千节点集群且定制较少可以选择使用 Kubernetes,而如果是万节点集群且定制较多,更适合使用 DC/OS。
DC/OS 的内核是 Mesos,Mesos 的优势在于双层调度机制。第一层调度先将整个 Node 分配给 Framework,之后再进行二次调度。如果有多个 Framework,还可以进行并行调度。
Kubernetes 数据结构的设计层次比较细,更符合微服务的设计思想。例如,从容器 ->Pods->Deployment,每个运行的容器都可能被封装为这么多的层次,且每一层都可以拆分组合,并具备自己的作用。
至于在定制方面的适用场景,以搭积木为例,Mesos 是零散的积木,需要自己组装来实现业务模型,而 Kubernetes 就是组装好的积木,直接拿来用就好了。
除此之外,应用状态也是一个需要考虑的因素。通常,应用的状态分为有状态和无状态两部分,两者的关键区别在于状态信息是由请求方还是响应方保存,如果是请求方保存就是无状态,反之亦然。
无状态应用无需关心响应方是谁,也无需同步各个响应方之间的信息,甚至被删除也不会影响其它。而有状态应用需要及时同步数据,不能丢失数据,消耗内存资源保存数据等,因此更需要谨慎对待。相比于 Kubernetes,DC/OS 捆绑了很多组件,且是分布式部署,因此能够支持更多的有状态服务,即使是复杂的分布式系统也可以在几分钟内部署完成。
第三,多租户 / 多部门协作选 DC/OS,反之选 Kubernetes
如果企业内部有多个业务部门,多个开发、测试、生产系统,需要协作完成相关工作,复杂度较高,那么建议选择 DC/OS,反之,则建议选择 Kubernetes。
在企业具体实践中,复杂度主要表现在以下几个方面:
- 一是存储资源的复杂度,当企业内的数据中心或机房超过一个时,那么就需要关心如何降低运维的难度,如何按需对业务系统提供即时支持;
- 二是多需求的复杂度,当企业存在多部门、多业务,且需求不同的时候,那么就要关心如何满足平台提供方与资源提供方的定制化需求;
- 三是管理流程和人员的复杂性,如何做到集中和统一管理,减少差异化带来的额外成本。
以上就是 Kubernetes 和 DC/OS 的选型建议,希望能给你带来参考价值。
- 上一篇: 如何使用Docker部署MongoDB副本集
- 下一篇: Docker技术剖析
猜你喜欢
- 2024-11-20 docker 容器内怎么把文件拷贝到宿主机
- 2024-11-20 2024年了,你还在使用Docker做容器吗?
- 2024-11-20 Docker入门详解(下)
- 2024-11-20 Docker与虚拟机区别详解(图文全面总结)
- 2024-11-20 Docker技术剖析
- 2024-11-20 如何使用Docker部署MongoDB副本集
- 2024-11-20 Docker Swarm 让你事半功倍
- 2024-11-20 WIN7下安装Docker容器
- 2024-11-20 大白话 linux 教程-02-环境搭建
- 2024-11-20 如何模拟一次阿里双11秒杀场景的实现?程序员必看
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)