为什么Kubernetes赢得容器之战

【编者的话】Kubernetes是Google开源的容器集群管理系统,其提供应用部署、维护、 扩展机制等功能,利用Kubernetes能方便地管理跨机器运行容器化的应用。今年的调查显示,Kubernetes成为被最广泛使用的编排工具。为什么在编排方面Kubernetes如此受欢迎呢?让我们看Matt Asay如何看待这个问题。

容器的使用在技术中日益广泛使用,尽管不同的编排产品竞争激烈,但是行业中一般都以Kubernetes作为容器的默认编排引擎。

对比诸多编排工具,包含Docker官方的Swarm,我们有必要研究下Kubernetes为何如此受欢迎,尤其是彼此之间复杂度的区别。

像MongoDB和Linux这样流行的开源软件,流行的原因可以归结为社区建设的功劳—例如谷歌研发15年的背后支持。最终,这一独特的卓越工程愿意让别人接手,也是Kubernetes能够成为令人印象深刻的开源项目的原因。

做有内容的社区

从社区的年龄来讲,Kubernetes不占优势。毕竟Kubernetes才两岁而已(从作为开源项目算起),而Apache的Mesos已经推出7年之久。Docker Swarm虽然是比Kubernetes更年轻的项目,但是它的背后是来自于Docker官方容器中心的全方位支持。

然而作为编排工具,对手在社区这一点比起来就显得略微苍白。现在Kubernetes社区在基础云平台的管理下正在不断变得丰富多彩。

  • Kubernetes是活跃在Github中前几名的项目之一:占有在所有项目中排名0.01%的star,而且在所有团队项目活跃度排名第一。
  • 虽然Kubernetes的文档欠佳,但是Kubernetes有自己的Slack和Stack Overflow社区作为补充,帮助解决问题优于其竞争对手。
  • 在LinkedIn上有更专业的Kubernetes专家,相比其他工具,Kubernetes通过LinkedIn为使用者提供了更广阔的解决问题空间。
  • 最明显的是,OpenHub的数据却显示了Apache Mesos正在走向衰落,Docker Swarm增长也开始放缓。从原始社区的贡献来讲,Kubernetes正在迅速增长,从1000+贡献者34000+的提交贡献,远远超过了其他像Mesos竞争对手的四倍之多。

是什么造成了这样疯狂的结果呢?总之一句话,是谷歌,或者是说谷歌的选择开源。虽然其他的每一个编排项目背后都有一个供应商公司在影响着,但是Kubernetes受益于谷歌的不干涉开发,以及比较优秀的原始引擎。

与此同时,Docker拥有实际上的容器标准,Docker也一直在努力构建与Kubernetes一样广泛深入的容器社区。基于以上原因,谷歌的Kelsey Hightower指出,Docker本身在阻止竞争对手进入构建容器标准。

当然,容器不需要任何标准化的输入,但是市场似乎更倾向于更少的权利集中在编排层的容器。由于市场需要一个可行的商业模式,我们期待Docker在ops,hence,编排容器方面的竞争。但是除非公司把Swarm转变为真实的行业标准,这样可能赢得了容器的战争,而会在编排工具的竞争中失败,即使他声称可以提供更好的性能。

谷歌崇拜者

Kubernetes活跃社区的背后是特殊的技术力量驱动。作为谷歌的Borg技术,Kubernetes已经累积了15年的深耕细作的发展和生产实践。这项技术特别好以至于时任谷歌技术基础架构部门领导的Urs Holzle难以置信的反应,当时一些工程师建议建议一个Borg版本并且提议开源。
“所以,让我直说了吧,你可以构建一个外部的Borg任务调度器,这也是我们一个最重要的竞争优势,甚至不谈其他的,重要的问题是要它开源吗?”

工程师使用Borg作为集群管理的工具,其中Gmail,YouTobe,Google Search和其他流行的谷歌服务都是用此工具作为基础框架管理。后来它被内置在谷歌的计算引擎中。但是工程师发现,用户关注点在CPU的那点利用率上。容器管理工具是必须的,他们可以作为一个守护进程运行在系统中,其中的诀窍把它公开、开源了。

据谷歌产品经理Martin Buhr说,谷歌更换Kubernetes的动机来自于一些官面的原因和一些自身的利益。谷歌希望开源的Kubernetes可以极大地扩展开发人员的生产力,从而使这个世界更加美好。更自私的讲,“随着时间的推移,我们将对谷歌云平台容器做全面的支持,将在市场上创造一个基于容器的应用程序,他们其中很大一部分会与我们同在的。”

换句话说,让开发和运维团队可以很舒服地使 用Kubernetes,所以他们可以选择谷歌的云平台更方便的使用。这是基本没有其他工作的,如果谷歌开始对Kubernetes有直接的货币利益,那对开源社区来说是个毒丸。

简而言之,Kubernetes的成功源于谷歌在代码层次15年的深耕细作,也因为谷歌渴望社区继续发展,并期待花费下一个15年去发展Kubernetes。