Kubernetes 的诞生
严格说来, Kubernetes 起源于 Google 的内部开源软件 Borg 。 Borg 是一个全面的软件工具,管理着从 Google 搜索到 Gmail 到 Google 地图等一切软件,让公司仔细地在全球范围内分配计算任务。几年来, Borg 一直是 Google 的机密。现在, Craig McLuckie 和其它两位在西雅图 Google 的工程师同事想要在互联网上分享 Google 的蓝图——或者说是蓝图的一部分: Borg ,将它作为一个开源项目重建。
一开始, McLuckie 把 Borg 开源的想法告诉 Urs Hölzle (监督计算机数据中心全球网络负责人)的时候, Hölzle 并不喜欢这个想法。
“我们第一次去找 Urs 的时候,他并不喜欢这个提议,” McLuckie 说道,“其实我们说到底,就是把 Google 的秘密武器开源了。”
但是 Hölzle 和 Google brass 剩下的人最终还是批准了这个项目。项目改名叫 Kubernetes ——这是一个古希腊单词,是舵手的意思。这个项目在去年的这个时候启动。在过去的 12 个月里, 370 多个码工贡献了 12500 多条“ commits ”到这个项目,而大部分码工并不是 Google 的员工,代码贡献前六位中,有三位都不是 Google 的员工。
Kubernetes 代表了在 Google 内部一个显著的转变,因为它试图在云计算领域跟 Amazon 和 Microsoft 竞争。传统点来讲, Google 为基础技术担保,确保这个技术可以启动它的线上王国—— Borg 作为一个主要的例子,对于特定的内容,它仍然是起作用的。但是既然这是一家主业做云计算的公司——邀请公司和开发人员在基础设施之上创建和运行他们的网页和其他在线应用程序——其更深层次的意义就是把做基础设施的社区和做软件的社区融为一体。
McLuckie 以及其他两个最先开始构思 Kubernetes 的工程师, Joe Beda , Brendan Burns 也都是创建 Google 云计算服务的小组成员。他们发现,他们的开源项目促使开发人员使用谷歌 GCE 云服务( GCE :即 Google Compute Cloud ,提供虚拟机服务,这样除谷歌以外的其他公司以及其他码工也可以运行几乎所有的软件代码), Kubernetes 在这样的云服务基础上,就能够更有效运行代码,使用物理机的公司就如同在他们自己的数据中心操作一样,而且最后, Hölzle 也同意这么做,放弃了代码私有化带来的好处,而将代码开源。“对于谷歌来说,云绝对是很有必要的,” McLuckie 说道,“我们要用新的方式来把我们的专业性带到社区。”
Google 进化史
这个举动回应了由云计算带来的变动。既然开发人员能够在大数量机器的基础上创建软件,他们正在使用开源软件来完成这件事。在这么多机器上运行软件花费很高,而且将这些做成模型来配合特定的需求也是十分困难的。所以今天的云计算公司必须使用开源技术,不管是提供像 GCE 这样的服务,还是创建软件来构成这样的服务。 Microsoft 同样也意识到这个无可辩驳的趋势,于是开始努力使用开源技术来推进 Azure 云计算服务的发展,有更好的前景。 VMware 和 EMC 也是如此。
说起 Google ,这里还有一个额外的曲折故事。 Google 技术可以算是云计算开源软件崛起的主要外力之一。虽然之前公司刻意跟这个崛起保持一定的距离,但是现在,它渐渐开始往发展方向靠拢了。 在过去十年中, Google 编译出来的软件需要在数百台机器,或者这些软件的数据需要在数百台机器上进行处理。 Google 并没有公开这个软件,而是将它看作成自己的一个竞争优势藏起来。然后,几年发展下来,到时候发布一篇描述这个技术的论文,外界就会克隆它。很多的工具的发展都是这样的:包括 MapReduce (催生了开源软件 Hadoop )和 BigTable (这个软件带给我们“ NoSQL ”数据库)。 同样的事情也发生在 Borg 上。几年前, Twitter 和加利福尼亚大学伯克利分校的工程师创建了 Mesos 工具,而今天,它支撑起一些大牌互联网服务的运营,包括 Twitter 和 Airbnb 。还有其他几个技术也都建立在 Docker 技术的基础之上, Docker 帮助开发人员将应用程序整齐打包到容器中,而在 Google 网络上, Borg 也一直是调度容器应用的。
但是现在,由于云业务的需求,以及一些其他的压力, Google 的角色转变了。它不仅仅只是分享一篇研究论文那么简单了。也不仅仅是在线基础设施上的开源小块。在一定程度上,它正在从一个整体的系统转化为一个开源的项目。
就像 Burns 说的那样,他和 McLuckie 看到那么多在运行的项目, Beda 和 McLuckie 探究 Borg 和容器背后的意义,他们觉得 Google 可以推进事情的进度。“我们感觉,所有这些拼图的方块散落在那里,而人们正在慢慢地将他们拾起并拼在一起,”他说,“我们有这盒拼图。而且从我们十年的经验来看,我们也知道如何将他们拼凑起来。”
可以肯定的是, Kubernetes 并不是一个开源 Borg 。它不像 Borg 那么复杂,它也不是 Borg 的延续( Omega )。鉴于它的立场,它不会在大数量机器的基础上处理任务。“我们仍然在尝试跟 Borg 达到同样规模,”, Beda 说道,“ Kubernetes 的重点就是抓住正确的核心观念。”
但是这些创建 Borg 和 Omega 的人也同样在 Kubernetes 平台上处理工作,包括 Uber 工程师, Eric Brewer , John Wilkes 和 Brian Grant 。“已经在 Borg 或者 Omega 上工作过的工程师继续在这个项目上处理工作,这意味着很多,” Joe Fernandes (来自 Red Hat ,负责该项目的工程师)说道。据 McLuckie 说, Kubernetes 的目的是在 Borg 和 Omega 上进行扩展——来弥补他们的失误。
在开源软件领域,这是 Google 要与对手展开竞争最好的方式。对于很多公司很多人来说,容器是软件开发的未来。而 Google 在这个过程中正扮演着重要的角色。
运行你想要运行的
Mark Kropf ,在 Pivotal 公司帮助创建类似系统时问道, Google 对于这个项目,有多投入呢?他说, Beda 目前已经离开公司了。而且据来自云服务提供商 Digital Ocean 的 CEO 兼联合创始人 Ben Uretsky 的说, Kubernetes ——以及其他相似的系统还没有被广泛的使用。“容器的发展其实还没有到达到巅峰,”,他说,“但是大家对我们给予了很高的期望,我们还有很长的路要走。”
但是无论 Kubernetes 的命运是什么,它仍然是软件开发的未来——从很多方面看都可以这么说。 在数据中心, Google 使用它自己的软件容器。但是一年前, Kubernetes 刚发布,它跟 Docker (一项开源技术)是相匹配的。当使用 Docker 技术的公司试图与容器技术相结合,到它自己的软件工具的时候, Google 与 Kubernetes 项目选择了能够替代 Docker 的一个技术, Rocket ,使用它是为了能够整体提升容器格式的独立性。
McLuckie 指出, Kubernetes 现在可以处理 Docker 和 Rocket 。他希望这个大社区最终能够退回到单个、独立的容器格式,他解释道,“但是这不是在站队, Kubernetes 应该是中立的,虽然这听起来可能有点理想化了,但是我们的目的是让想用的人去使用。这确实是一家云公司必须要做的事情:公开开源软件,让想要使用的人来使用。“眼下正在发生的变革,”, McLuckie 说道,“比任何一家公司的规模都要大。”
原文链接: