OpenStack, Kubernetes, Mesos 谁主沉浮
【编者的话】历经变迁,由服务器,网络和存储慢慢形成的现代IT大厦,最终会被哪个层次的软件掌控?会是Openstack吗(虚拟化巨兽 VMware也吸纳了这种技术)?或者会是应用调度框架,Mesos(从加州伯克利分校的AMPLab发展而来)吗?会是Kubernetes(从 google的borg和Omega作业调度框架发展而来)吗?
这一问题的答案并不像我们期望的那么明显,但是却很值得我们去深入思考。Openstack已经在数据中心建设中博得青睐,而Mesos和 Kubernetes,尽管尚处于发展阶段,也已经引起软件栈高层级的注意。这些改变将数据中心建设的重心从架构虚拟化和编排转向为,如何在服务器集群节点中采用容器技术,来提高利用率并且简化部署和维护应用的流程。
很自然的会想到,Openstack将会因为很强的控制能力而演变成为重心,或者说至少对中意开源软件的数据中心来说。微软和VMware有巨大的虚拟机装机量,而且还有他们自己的管理工具– Systems Center with Azure Pack plug-ins for Microsoft 和vSphere and vCloud extensions for VMware – 用于创建和管理云。现在他们也都尝试在虚拟化架构之上采用Docker容器技术,以便应对来自Linux,Kubernetes(google开源的用于调度和容器管理的系统)和Docker容器的挑战。
当Openstack初成规模时,软件容器也已经发展了一段时间,但是由于数据中心以虚机和服务器整合为重心使得软件容器技术暂时黯淡下来。而当NASA和Rackspace五年前发布Openstack项目时,其雄心是为了大规模云平台而开发一个中心控制系统,其目标是管理一百万服务器节点和多达六千万虚机,这不仅仅是惊人的数量,而且还大大超出预料。可扩展性在今天看来是很重要的问题,许多公司对裸机和虚机有同样的需求,有时候前者更适合某些特定负载情况。行业应用和终端用户的实际需求转变了Openstack项目的优先级别,Openstack已经成为虚拟机,存储和网络编排的重心– 而这跟项目初始时候的计划已经不可同日而语。
容器技术的发展,对Openstack的需求不但并没有减退,反而催生了Mesos和Kubernetes调度器和容器化应用开发和部署走向前台,面对这些变化自然会提出,哪个会最终成为未来应用集群执牛耳者的问题?
“现在业界明显的分成两大阵营”,Boris Renski(Openstack 发行商Mirantis的co-founder 和首席市场官)告诉 The Platform, “Openstack和Mesos有一些重合的地方,但是并不很大。Kubernetes 阵营和Docker 阵营将会最终解决最重要和最困难的问题,而其他问题都是次要的,会慢慢发展成为Openstack现有的功能。而Openstack 阵营正在做相反的事情,认为容器已经发展了一段时间,容器编排技术上看是比较简单的事情,Openstack正在解决物理机和虚拟机编排的问题,为此引入了Kubernetes和容器编排的功能。”
整合这两大阵营的工作由一个叫Magnum的项目完成,可以回溯到五月份,他可以在Openstack和goolge的 Kubernetes,Docker Swarm,CoreOS Tectonic以及其他一些新出现的容器管理系统之间提供挂钩(hooks)支持。Magnum开始于2014年11月,还没有被合并到主代码中,因此如果想整合Openstack和Mesos(Kubernetes可以运行在此框架之上,提供更加原生的支持)或者Kubernetes,就必须依赖手工来安装配置他们,使用Openstack部署物理机或者虚拟机,然后将资源暴露给容器管理系统,但是计算资源如何编排尚不清楚。
Matt Trifiro(Mesosphere市场部资深副总裁)指出,严格的说,如果想运行Mesos集群,不管有没有Kubernetes在其上,并不需要一个与Openstack类似的云控制器,Apache Mesos项目背后的商业模块会提供控制器端的商业支持。
“传统企业会投资人员和技术方向,但事实证明会在员工中产生惰性”,Trifiro解释说,“我们有许多客户使用VMware或者 Openstack,这些系统能够对于部署设备非常有效。有很多实际部署场景,客户会使用VMware,或者Openstack,或者其他部署工具(最终成为DCOS集群的一部分)。随着时间的推移,当DCOS集群进入生产状态时,会移除底层不必需的层次。我们并非对虚拟化提供商别有企图,但是可以预见到这些演变,而且这是普遍的演变路线,因为他们并不是严格必需的。
为了说明这个变化,Benjamin Hindman, (AMPLab时Mesos项目创始人之一,他在推ter和Airbnb时将应用框架和复杂两层调度器转变成集群控制器)举了Apple这个案例,Apple现在使用Mesos作为成千个服务器节点的资源调度器来支持Siri服务。
“Apple Siri团队刚开始运行在VMware之上,最终转变到裸服务器上”,Hindman解释说,“当Apple从物理机迁移到Mesos后,一个主要原因就是:首先,他们不在需要虚拟机;第二,性能有很大提升。虚拟机系统带来的损耗是真实存在的,在Apple来说,大概在30%左右。也就是不采用虚机架构,Apple运行Siri比以前快30%以上,的确是一个很大的改善”。
Mesosphere并不想带给大家一种概念,就是DCOS(Data Center Operating System,Mesosphere用于生产系统的Mesos工具)要取代云控制器,例如Openstack和VMware vCloud。即使这样,从Apple案例中可以看出,对许多应用负载来说虚拟化并不是必需的。
“我们和Openstack和VMware社区有很好的合作”,Trifiro说,“例如,VMware提供的许多管理和安全架构并不是我们今天想要的,或者说,企业需要的可能并不是我们今天的软件栈能够提供的,这对我们来说并不是(缠绕着我们脖子的)噩梦,应该理解这是真正的商业价值。虚拟化并不能帮助更好的编排容器,但是对很多企业客户,用DCOS加上VMware来管理容器可以起到1+1=5的效果”。
Hindman或多或少同意这个论点,但是从长期看,虚拟化并不是必需的。“我们和虚拟化是相辅相成的,我们在虚拟机内部运行。但是对于已有的云服务提供商来说下一步演进就是基于裸机的Mesos系统。但是如果想在一个linux实例之上的windows虚拟机中运行一个windows应用,这是可以做到的”。
根据Renski,这种信念也许是同构架构的副产品,而Airbnb和推ter采用的这种架构跟传统企业客户有很强的对比。
“有些纯粹主义者,例如CoreOS和Mesosphere的创始人,他们来自于互联网+世界,所有的集群都是一样的,最大的问题就是管理容器和应用”,他解释说,“如果反过来看现在的企业,这是一个充满异构平台的世界,如何解决异构性是一个巨大而复杂的难题。因此从企业视野来看,不像 推ter或者Goolge的视野,将会看到VMware vsphere和Microsoft Hyper-V,不同厂商提供的存储,等等;这些客户想要一个单一界面来管理裸机和虚拟机。我并不确认哪个阵营会赢,我也不确定企业是否会选择纯粹主义方式而将他们的架构完全转变成单一架构”。
考虑到现有数据中心已经运营和很久,这种情况看起来不太可能发生。但是在未开发的应用领域(或者说新数据中心的蓝海),他们正在建造这种新的云平台,甚至用来支撑超算中心。
因此,Rensi说,只要传统企业用户继续异构化思路(而不是同构化架构),Openstack将会占有一席之地,Kubernetes和Mesosphere将会跟Openstack“完全的相辅相成”。
“Openstack的出发点是简化异构化数据中心的管理”,Renski说,“大量的供应商为物理设备提供大量种驱动,而Openstack 的价值则表现在,将这些驱动表现为(译者:或者暴露为:expose)各种APIs,允许对裸机和虚机进行编排,而不论他们是计算节点,存储还是网络。 Kubernetes和Mesos更像是人们常说的PaaS层。他们更擅长于管理和扩展容器中的应用;Openstack更专注于异构化的数据中心,但是对应用和容器管理就力不从心了。而如果将Kubernetes和Mesos架构于其上,则会更像是凤凰涅槃,获得重生。”
CoreOS最近跟Mirantis达成一致,将CoreOS Tectonic容器框架和Mirantis的Openstack发行版紧密合作(继去年Cisco抢购了Metacloud和Piston cloud computing后,Mirantis成为为一个独立的Openstack发行商)。Alex Polvi, CoreOS的CEO对The Platform说,让Tectonic运行在Openstack之上正好满足现在很多客户端需求,而Openstack是Tectonic可以部署在其上的虚拟架构栈之一,但是Polvi也并没有太直言不讳。
“我们看来---当然是基于我们的产品,也是为什么为什么要这么做的原因---我们认为CoreOS加Openstack是绝佳搭档,”,Polvi说,“有将Kubernetes架构在Mesos之上的方案,甚至底层又架构在Openstack之上,但是我们认为最简方案应该是 CoreOS加Kubernetes,然后应用运行在其上(如果你想的话,也可以包括Mesos)。我知道Mesos走的是另外的途径,但是技术上来说是没有问题的。我们相信google和推ter的架构方式将会是最终方向。如果当初搭建Google的大牛们现在开始按照Borg为蓝本开发 Kubernetes的版本,可以肯定将会最终赢得这个领域”。
真正的对抗,可能是基于Mesos和Kubernetes。如Polvi指出,Mesos有一些Kubernetes目前并不具备的功能,但是他认为这只是一个成熟度的问题。“Kubernetes还很年轻,再过一到两年,将会看到某些Mesos无法处理的场景,但是我们相信 Kubernetes会成为分布式数据中心的Linux,未来的一切都是基于其上的,就像现在的Linux操作系统一样”。
看起来传统企业用户仍然会在需要的地方使用虚拟化,也许会将容器运行其上;只要有可能,就一般会默认的将容器运行在裸机上。最终这个问题又有会成为性价比问题,就像Apple Siri项目一样。但是即使是裸机编排也需要一部分Openstack类似的融合功能,Mesos是否能演进出自己的这部分功能,还是Openstack 开发出类似Borg的部分功能,我们拭目以待。
原文链接: Will OpenStack, Kubernetes, Or Mesos Control Future Clusters? (翻译:杨峰)