2017年3月在开源软件史上是一个重要的月份。在这个月aws与创业公司heptio合作在aws云上启动了kubernetes(以下简称k8s)开源容器集群服务,k8s源自谷歌技术并形成了由谷歌支持的开源社区,此前已经被除了aws之外几乎所有云平台支持。同样在3月,谷歌k8s与pivotal的cloud foundry也握手言和,之前这两个被视为竞争性的技术也互相支持互相融合了,从而把k8s带向了企业级市场。简单说,k8s已经取得了压倒性优势。
在近两年兴起的容器技术体系中,一个重要的技术层就是容器集群管理技术,一共有源于谷歌技术派的k8s、源自高校学院派的mesos和源自docker公司的swarm三大开源社区。单一的容器本身并没有太大的意义,必须有容器集群管理技术才能管理和调度成千上万甚至上亿的容器,这才在有实际的意义。这三大容器集群管理技术各有千秋,各自适应不同的应用环境,总体来说k8s的功能最为强大且由谷歌在幕后支持,大有一统江湖的势头。
2017年3月,国内openstack开源企业easystack正式发布基于kubernetes技术的容器集群产品escontainer,并宣布不仅在openstack最新的ocata版本中核心代码贡献全球top9,在kubernetes容器领域核心代码贡献也排名全球top9。除easystack外,国内其它openstack公司也纷纷发布了自己的k8s产品,“容器+云”终成大势。
k8s+openstack形成1+1>2效应
linux基金会执行董事吉姆·泽姆林(jimzemlin)表示,kubernetes正迅速成为云计算的“linux”。
k8s是谷歌开源的docker容器集群管理系统,前身为谷歌容器集群管理系统borg。k8s为容器化的应用提供资源调度、部署运行、服务发现、扩容缩容等整一套功能,本质上可看作是基于容器技术的新一代paas平台。目前,kubernetes由cncf社区支持,这是由google发起的开源社区并将k8s捐赠给了该社区,谷歌每年仍会投入大量工程师全职开发k8s。k8s是整个谷歌技术开放生态战略的一个重要组成部分,k8s由go语言编写、与谷歌深度学习开源软件tensorflow以及其它谷歌开源软件有着天然的兼容性。
那么,为什么会说k8s是云计算的“linux”呢?这句话的意思,就是k8s是云操作系统的核心。在一个由上千台乃至上万台服务器组成的云数据中心以及跨云数据中心的“云计算”中,硬件和软件资源调度管理具有高度的复杂性,k8s可以理解为云应用软件的动态资源调度管理平台,这就是操作系统的核心。之前的openstack主要实现的是服务器、存储和网络等基础硬件资源的云化和虚拟化,当这一步完成以后就需要进一步与k8s这样的调度系统集成与对接,面向云应用完成从上到下的云计算资源动态调度与管理,实现无缝的用户体验。
easystack cto刘国辉表示,easystack从很早以前就已经开始注意到k8s了。k8s的前身是谷歌borg,于2014年6月开源。而easystack成立于2014年2月,创始团队来自ibm中国研发中心的openstack核心技术人员。从谷歌开始发表学术文章介绍borg的时候,easystack的创始团队就已经开始从中了解borg的核心思想,当k8s开源后即跟进并开始技术积累。
“我们认为,k8s+底层的iaas云,是1+1>2的叠加效应。”刘国辉认为,“easystack这次推出的是第三代容器云,是容器与云的深度一体化集成,可称为one platform for next generation application。”什么是第三代容器云呢?第一代是容器与iaas云各自独立发展;第二代是aws与谷歌云等iaas云开始支持容器,但处于分裂的手工配置状态;第三代就是类似easystack escontainer这样自上而下docker容器、k8s调度系统、openstack iaas云乃至更底层裸机的一体化融合云。
easystack的escontainer所实现的k8s加上openstack,是可以从上层应用到底层各类物理资源的打穿式融合,这样就很适合企业级计算环境。easystack从成立第一天起就是面向大型企业市场,为企业级应用提供openstack iaas云计算环境,如今再加上k8s就形成了一个完整的iaas+paas企业云解决方案,在这之上就可以运行深度学习等企业级应用。
刘国辉表示,escontainer带来k8s与openstack的1+1>2的能力:escloud专注于数据中心基础设施的管理和支撑传统应用业务的运行,escontainer专注于为企业新型应用的改造提供一站式平台,两者结合优势互补,成为新型的异构数据中心基础设施平台。
在正确的时间推出正确的产品
“大家可能觉得奇怪,怎么easystack之前并没有在k8s领域发声,然后一发声怎么就在kubernetes容器领域核心代码贡献也排名全球top9呢?”easystack ceo陈喜伦强调说,“我们不是机会主义者,而是早已有一个长期布局。”
陈喜伦说easystack的技术战略观为三条:首先追求技术与战略的前瞻性,其次是根据客户需求进行判断,第三是以社区入手布局未来的产品与服务。
easystack的创始团队从很早就已经开始关注borg和k8s技术以及cncf社区的发展,所以当判断k8s技术开始趋于成熟和主流的时候,就决定对k8s社区进行投入。2016年下半年,easystack相继加入了cncf基金会和oci开放容器基金会,从国际开源社区入手布局k8s。
在客户需求的成熟度方面,由于easystack针对的是大型b端企业,任何从互联网企业产生的技术到企业级应用都有一个曲线,而easystack相应推出产品的时间就是当企业开始用这个技术的时候,就是最佳时机。“我们现在服务一百多家大型企业级客户,很多客户都有对kubernetes的需求,因为要解决最后这一公里的企业级应用的问题,所以选择在这个时间点推出escontainer。”
陈喜伦强调说,easystack现在迈出k8s这一步是公司三年成立时就确定的核心战略的充分体现,未来还将推出更多基于开源技术的产品和服务,但是目标是一致的,即以开源技术为核心的新一代技术软件领导者。
而在开源社区方面,easystack加入oci和cncf社区并成为社区贡献top 9,主要是为了保持开源技术供应商的本质,跟随标准化开源技术的发展而成为大生态中的一员。“我们做任何产品都是以开源技术为基础,但我们做好开源技术的产品化,这很关键,这就解决了开源技术的可用、能用和好用的问题。”陈喜伦说。
以集群的可扩展为例,escontainer可做到多层多级扩展,在k8s层可扩展、在虚机和祼机层还分别可以扩展,这样一来容器除了可以部署到虚机上还可以直接部署到裸金属服务器上,直接部署到裸金属服务器上的最大好处就是带来了更高的安全性,符合金融等企业级应用的需求。
此外,escontainer可直接使用neutron二层网络作为网络驱动,用neutron统一管理虚拟机和容器网络,减少多层overlay叠加带来的性能损失;同时由于虚拟机和容器处于同一个子网中,可做到虚拟机和容器应用的二层网络直通,适用于企业中传统业务和云原生业务共存并需要直接数据交换的场景。neutron是openstack核心项目之一,提供云计算环境下的虚拟网络功能,在多租户环境下可提供给每个租户独立的网络环境。
当然,作为一个独立的第三方开源技术供应商,easystack除了k8s外也将支持mesos和swarm以满足用户的需求。
“你看红帽基本上和每家厂商都合作,原因是什么?就是因为它坚守开源路线,它不和任何一家厂商做深度绑定,这个事情也正在发生在easystack身上。我们的定位,就是开放的、中立的、以开源技术为核心的技术供应商。”陈喜伦强调。
接下来,easystack还要解决整个企业原生云应用的技术生态环境问题。有了k8s+openstack的escontainer仅仅是第一步,关于企业如何构建下一代的应用架构还需要整个产业达成一个共识,而这不仅是容器、k8s集群和openstack所能解决的问题,而是包括了整个devops开发过程、应用架构升级换代甚至企业敏捷开发文化的建立等综合性体系问题。
“大型行业企业都已经在思考下一代企业应用平台,但是还没有形成一个共识,我们已经提前去布局这个事情了。”陈喜伦透露在2017年easystack还将发布更多的产品,为搭建针对企业原生云应用的企业级容器云环境找到一个最佳路径。(文/宁川)