容器集群管理技术对比

news/2024/6/3 16:35:01 标签: 云计算, 容器, Swarm, Kubernetes

作者简介:吴恒,BoCloud博云主任架构师,中科院软件所博士,虚拟化、容器化10多年经验,docker、libcloud开源项目社区贡献者,并带领团队为swarm、swarmkit、kubernets开源社区贡献内容。
本文节选自《程序员》,谢绝转载,更多精彩,请订阅《程序员》
责编:魏伟,欢迎投稿和咨询报道,详情联系weiwei@csdn.net

企业IT架构是指机房硬件管理和应用开发交付模式,前者涉及物理资源的高效便捷管理,衍生出虚拟化技术;后者关系到开发运维协同工作,加速容器技术的发展。特别是在互联网化已成为促进信息技术产业发展和应用创新主要推手的当代,迫切需要应对“交付方式移动化、用户峰值极限化、版本更新高频化、失效恢复实时化”的应用新特点。因此,企业对应用管控的性能、敏捷性和可靠性提出了更高的要求, IT架构转型升级迫在眉睫。

容器是一种新型物理资源抽象方法,其核心思想是操作系统内核的复用,通过提供应用运行环境描述规范,自动构建应用(进程)的沙箱运行环境,达到应用相互隔离的目的。如图1所示,与虚拟机技术相比,容器回避了冗余OS(Duplicated OS)问题,理论具有与物理机接近的性能[1];容器引入应用环境描述规范,机器识别替代基于脚本和文档的应用环境构建,容易维护,不易出错[2]。因此,容器具有更好的性能,更优的敏捷性,正逐渐成为构建应用系统运行环境的主流基础设施。

图片描述

图1 虚拟机和容器区别

容器集群是一种将多台物理机抽象为逻辑上单一容器的技术,在有效应对规模化管理需求的同时,通常会引入基于记录和回放的失效恢复机制,大大提高容器的可靠性。当前,容器集群已成为容器产业化的事实管理方式,呈现出“百花争鸣”的竞争态势,本文将考虑资源管理和应用管控两个方面,并从生态角度进行简单讨论,对已有容器集群管理技术进行初步分析,可为企业容器集群技术选择提供依据。

现状:百花争鸣

容器集群已成为实现应用敏捷管理的主流手段,公有云Amazon、Microsoft、Google、Aliyun纷纷推出新产品抢占容器市场,开源界Openshift、Cloudfoundry、Rancher、Docker Cloud、OpenStack也都将容器作为战略方向构建生态,百花争鸣。各家采用的容器集群管理技术也不尽相同,主要包括kubernetes、mesos、swarm/swarmkit、nova四大类,呈现出群雄争霸的局面,如表1所示。

表1 主流容器集群管理技术
图片描述

注意:以上信息均来自互联网,某些企业/开源系统同时支持多种容器集群管理,比如Microsoft同时支持mesos和swarm

初步观察,各种容器集群管理技术都具有良好的产业支持,也有(较)重量的开源跟进,但仔细分析,能发现其中的异同:

  • kubernetes:大多为互联网企业使用,主要用于用于简化互联网应用的管理,特别是容错方面;
  • mesos:大多面向企业内部,强调资源的统一管理;
  • swarm/swarmkit:大多为公有云厂商,具有规模化资源管理和个性化应用管控需求,比如应用的灰度发布;
  • nova:大多为面向具有OpenStack基础的企业内部,存在虚拟机和容器两种解决方案,需要统一管理。

由此可见,资源管理和应用管控是企业IT架构两个关键要素。其中,资源管理是指具备物理资源统一抽象、按需供给、负载均衡等能力,实现容器与物理资源的合理关联放置;应用管控是以应用逻辑为核心,统一管理具有关联关系的多个容器,比如应用的典型架构涉及三层,包括Web服务器、应用服务器和数据库服务器,会部署在不同容器中。Docker官方调研报告将应用管理作为容器核心能力之一,认为kubernetes和swarm/swarmkit优势明显[7],如表2所示。

表2 主流容器集群管理对资源管理和应用管控的支持

图片描述

注意:仅仅以软件原生版本能力作为对比依据;用户偏好数据来源于Docker官网
从生态环境来看,kubernetes吸取了Google Borg的精髓[8],后者被认为是Google近十年最“神秘的系统”,具有线上成熟的大规模类容器管理经验,因此是当前互联网厂商模仿和使用的对象;mesos受Apache支持,最初面向短任务场景(短任务如Hadoop,在有限时间内完成并释放资源),专注资源按需隔离、快速决策和回收管理,但扩展到Facebook、Twitter等7*24类服务型应用,需定制应用管理能力[9];

swarm/swarmkit由Docker社区亲自推动,通过Docker本身能力的增强,以更加简洁有效的方式实现类似kubernetes(swarmkit已经发布)的应用管控能力,社区关注度和贡献者发展很快;Nova得易于OpenStack社区推动,但落地应用一方面强依赖于OpenStack实施的广度和深度,另一方面需要扩展OpenStack支持应用管控。具体生态对比如表3所示。

表3 主流容器集群管理生态基础

图片描述

注意:星级越高,说明关注度越高,社区越活跃

综上所述,结合Docker官网关于应用管控的发展趋势,成熟稳定的kubernetes和原生支持的swarm/swarmkit具有更广阔的发展前景。OpenStack也具有一定的竞争优势,得益于Openshift、Cloudfoundry等关注应用管控平台的天然支持,但复杂性是其短板。相对而言,就支持应用管控能力而言,mesos的生态环境相对较差,如表4所示。

表4 主流容器集群管理如何支持应用管控
图片描述

未来:双雄争霸

从Docker官方的发展规划、开源应用管理平台的转型力度(Openshift3基于Docker技术重新实现应用管理逻辑、Cloudfoundry大力投入支持基于Dokcer进行应用管理),基于Docker的公有云的定位和具体实现,可见资源管理和应用管控是容器集群的两大关键要素。通过前述已有技术的分析和生态预期,kubernetes和swarmkit应具有更广阔的发展前景。尽管当前,基于kubernetes的容器集群管理方案一直是容器大会的热点[10]。但值得预期,随着swarmkit的不断成熟和社区推动,会有越来越多的相关解决方案[11]。未来,双雄争霸将会是容器集群管理的焦点。

参考文献

1.http://domino.research.ibm.com/library/cyberdig.nsf/papers/0929052195DD819C85257D2300681E7B/%24File/rc25482.pdf
2.http://spiral.imperial.ac.uk:8080/bitstream/10044/1/19253/8/14_fg_wosp_cr.pdf
3.http://kubernetes.io/
4.http://mesos.apache.org/
5.http://www.docker.com/
6.http://www.OpenStack.org/
7.https://www.docker.com/survey-2016
8.http://119.90.25.29/cs.brown.edu/courses/csci2950u/f10/papers/mesos_tech_report.pdf
9.http://119.90.25.46/web.eecs.umich.edu/~mosharaf/Readings/Borg.pdf
10. http://pan.baidu.com/s/1kVdaJpd
11. http://www.infoq.com/cn/news/2016/06/Docker-SwarmKit

责编:魏伟,微信搜索“k15751091376”加入容器、微服务架构群。


http://www.niftyadmin.cn/n/1839742.html

相关文章

php典型三层架构

php典型三层架构 数据库 CREATE TABLE t_user ( u_id int(11) NOT NULL, u_name varchar(20) default NULL, u_password varchar(20) default NULL, PRIMARY KEY (u_id) ) page文件夹(表现层) userslist.php <?php include_once ../facade/usersAction.php; …

SmartX联手沃云打造全新超融合公有云背后技术解析

在巨头林立的存储领域创业&#xff0c;不仅需要勇气&#xff0c;还需要技术&#xff0c;SmartX就是将目光瞄准对技术要求极高的超融合存储领域&#xff0c;三位有着清华背景的海归派创始人凭借在超融合领域的深厚技术研究打造起来的SmartX,去年开始进军中国&#xff0c;并迅速和…

剑指offer12.矩阵中的路径

太难了&#xff0c;想了一会儿没有头绪就直接看了题解。 class Solution {public boolean exist(char[][] board, String word) {int clowns board.length;int rows board[0].length;boolean[][] visited new boolean[clowns][rows];for(int i 0;i<clowns;i){for(int j0…

js数组中间插入多个数据的3种实现方法splice,concat,slice

用途&#xff0c;比如500M的文件&#xff0c;在第200M后面插入100M新内容&#xff0c;变成600M //在第3个元素前面插入2个新值 var oldArr3[1,2,3,4,5,6,7,8]; oldArr3.splice(2,0,[11,22]); //返回结果&#xff1a;1,2,11,22,3,4,5,6,7,8 alert(oldArr3oldArr3); //方法2&a…

李彦宏揭秘:百度为什么推出自己的网站

1999年底&#xff0c;当纳斯达克指数从2500点跃升至3000点&#xff0c;又用了一个半月时间冲至4000点&#xff0c;31岁的李彦宏正在给自己筹备中的公司起名字。他已在美国搜索引擎公司Infoseek工作3年&#xff0c;但他想到的是Infoseek的竞争对手Inktomi。忘了在哪里看过&#…

[转载]原型

对原型的基本要求包括&#xff1a;* 体现主要的功能&#xff1b;* 提供基本的界面风格&#xff1b;* 展示比较模糊的部分&#xff0c;以便于确认或进一步明确&#xff0c;防患于未然。* 原型最好是可运行的&#xff0c;至少在各主要功能模块之间能够建立相互连接。2.4 处理方法…

一周极客热文:3月,献给程序员们的技术书

北京的雾霾刚刚过去&#xff0c;小编便开始埋头做三月书讯了。 《算法谜题》 经典算法谜题的合集 Google、Facebook等一流IT公司算法面试必备《Hadoop实战手册》 快速解决诸多Hadoop相关技术问题的实用技术手册《趣学Python编程》 无需任何计算机基础知识&#xff0c;轻松有趣…

vb6.0创建“标准”DLL的变态方法(附最简单方法6行代码)

我发现了一个新方法&#xff0c;不需要修改假的Link.exe文件。 6行代码最简单的VB6标准DLL工程-CSDN下载https://download.csdn.net/download/xiaoyao961/11168916 新建一个EXE工程&#xff0c;引用vbapi.dll这个COM对象 他又是标准DLL&#xff0c;又是COM DLL,VB6就是这么强…