Google 云平台负责人:开源是唯一的路

jopen 9年前

Kubernetes是Google开源的容器集群管理系统。它构建在Docker技术之上,为容器化的应用提供资源调度、部署运行、服务发现、扩 容缩容等整一套功能,本质上可看作是基于容器技术的mini-PaaS平台。在项目公开后不久,微软、IBM、VMware、Docker、CoreOS 以及SaltStack等多家公司便纷纷加入了Kubernetes社区,为该项目发展作出贡献。

Dawn Chen是Google云平台软件工程师,目前负责Kubernetes项目。图灵访谈在CNUTCon全球容器技术峰会现场采访了Dawn。

拥有超过8年的Google工作经验的Dawn,负责过多层堆栈,包括内核,机管理,群集节点,管理,调度。供职谷歌前,她曾任职于Veritas 和Symantec。除了分享有关Kubernetes项目的情况之外,作为一名女性程序员,Dwan也聊了聊她的从业经历与感受。以下是根据Dwan在 访谈中的回答整理的内容:

 Google 云平台负责人:开源是唯一的路

开源是唯一的路

Kubernetes是一个很大的开源项目,我是其中一个负责人,主要负责容器技术这部分,包括管理节点在某台机器上的实现,以及保障每个组件的顺 利运行。除此之外,我们还有负责调度的,负责API的,还有负责整个集群以及网络的。对于虚拟机,甚至是裸机来说,我们需要确定内核,库,还有容器技术的 调度方式和应用方式。

Google 云平台负责人:开源是唯一的路

很多员工在离开Google之后去了其他公司,比如非死book、推ter或者腾讯。他们中的很多人都会遇到一个问题,新的公司为什么没有Borg(Google的开源容器集群管理系统)?也有很多人问过我:你们的Kubernetes为什么没有Borg的这个功能、那个功能?可见他们有多么喜欢Borg。

从经验上看,Google过去在总体上虽然不怎么开源,但是却发表了很多相关的论文,比如说对于业界很重要的MapReduce、BigTable 论文。有很多开源的人或者公司觉得论文很有价值,然后就想要重新装备这些系统。并不是说Google不愿意开源,否则它也不会去发表这类论文,问题是在于 开源需要太多的人力和物力了。后来Google发现,这些系统其实跟我们的系统并不兼容,尤其在API方面。所以我们觉得,Google应该重新检视关于 是否开源的决定。况且,作为一家越来越重视云的公司,如果真的要在云上面做文章,那我们唯一能做的事情是什么?就是开源。

容器技术如果不开源的话,我们就应该做到让用户完全信任,无须担心安全问题。如果用户能够完全信赖容器技术,我们就不需要提供虚拟机了,用户也可以不需要SSH他们的机器了(SSH 为 Secure Shell 的缩写,是目前较可靠、专为远程登录会话和其他网络服务提供安全性的协议,在正确使用时可弥补网络中的漏洞)。但是我们做不到,现在的容器技术做不到。就算能做到,我们也没有办法去说服使用者去接受纯粹的服务而不是一台机器。因为用户还是会很担心诸如“程序到底在哪里运行”、“他们会不会偷了我的机密”这类问题。

我们大家都相信无论是Google的云还是别人的云,都需要有一个集群管理。我们也相信,容器既然能让Google受益,也能让别人受益

Google 云平台负责人:开源是唯一的路

Kubernetes与Borg

Borg是Google的内部容器管理系统。早在十几年前,Google就已经部署Borg系统对来自于几千个应用程序所提交的job进行 接收、调试、启动、停止、重启和监控,实现资源管理的自动化以及跨多个数据中心的资源利用率最大化。Kubernetes项目的创始人Brendan Burns 曾表示, Kubernetes项目的目的就是将Borg最精华的部分提取出来,使现在的开发者能够更简单、直接地应用,Kubernetes以Borg为灵感,但 又没那么复杂和功能全面,更强调了模块性和可理解性。

在我看来,Kubernetes与Borg最主要不同就是API。Borg的高层是描述性的,但是在Borg真正实现的组件之间,实际上是命令性的API。而我们在最初设计Kubernetes时就坚持使用描述性的API。

因为使用了描述性API,所以Kubernetes的内部实现不需要有非常复杂的状态机,我们使用了一个比较简单的调和控制回路。所谓“描述性”就 是形容你想要的是什么状态,最终要的是什么结果,然后你的调和控制回路(也就是控制系统)知道了这个目标,它会根据现有状况进行调整,一直驱动达到理想的 状态。比如你在调度的时候,需要考虑有多少个job在运行,job是在什么情况下运行,有多少个copy在运行,少了一个copy你就多加一个,多了一个 你就杀死一个。这两点就是主要贯彻在整个Kubernetes设计中的原则。

Kubernetes与Mesos

Mesos起源于Borg,是Apache下的开源分布式资源管理框架,被称为是分布式系统的内核。Mesos能够成为最优秀的数据中心资 源管理器的一个重要功能是面对各种类型的应用,它具备像交警一样的疏导能力。它可以将不同的机器整合在一个逻辑计算机上。总体上看,Mesos是一个 master/slave结构(主/从结构),其中,master实际上是一个全局资源调度器,采用某种策略将某个slave上的空闲资源分配给某一个 framework,各种framework通过自己的调度器向Mesos master注册,以接入到Mesos中;而Mesos slave主要功能是汇报任务的状态和启动各个framework的执行(executor)。

Google 云平台负责人:开源是唯一的路

Mesos的调度在如今已经做得非常成熟和完善了,Mesos的重点就是调度的算法,它不是一个完整的生态系统,也不是一个集群管理系统。与之相比,Kubernetes从一开始就是以一个生态系统为目的而设计的,它有正常检查、监控、记录。

Mesos能把你要做的东西建立在很多要求上,部署到机器上,但是当你要做升级,需要扩大规模或减小规模时,Mesos就无能为力了。Mesos需 要与很多别的东西结合,比如现在的Mesos实际上是跟Kubernetes结合的,你可以使用Mesos非常酷炫的调度功能,同时也可以用到 Kubernetes自己的集群管理功能。

当然,Kubernetes也会越来越完善,因为我们自己内部的算法也很复杂。我相信Mesos也会逐渐提升。Kubernetes和Mesos都是开源的项目,其实是种互补的关系,或者说是一种良性竞争的关系。所以未来会怎么样,没有人知道。

我不想做大家都觉得会火的事情

可能是因为我一直比较叛逆,父母希望我去学计算机,但是他们越想让我学我就越不想学。到了美国念书时,还是因为计算机给了奖学金,我才去念的。由于 我数学很好(我本来是学数理统计的),所以觉得在美国学计算机真的很容易。随着学习越来越深入,我才觉得计算机越学越有意思了。因为用计算机写程序解决的 都是生活中的实际的问题,我可以把问题自动化、模拟化。

研究生毕业的时候,我正好赶上2000年第一次互联网泡沫。那个时候很多人都去做web,可能是因为既简单,来钱又快。虽然我也去了硅谷,但也许还是因为叛逆的性格,我就不想去做web,我不太愿意做大家觉得接下来会很火的东西。

我选择去了Veritas的一个研究实验室,这个实验室主要是做存储的,就是给企业做集群管理。但是Veritas本身没有数据中心,它实际上还是传统的软件公司,把自己的东西打包卖出去。

我在Veritas做过很多有趣的项目,这些技术对我今天的工作来说都很有价值。但是当时让我印象最深的是,我们每一个项目做完,都没有办法部署出 去。因为Veritas是以研究为导向的软件公司,而不是Google那样的服务型公司,所以这些项目既没有办法跟公司已有的软件结合在一起,所以不能跟 公司的基础设施结合(因为Veritas没有面向外界的基础设施),我们很多有意思的研究都没有办法应用。后来研究实验室也越来越不景气,公司又被 Symantec买了,变得越来越以商业为导向,于是我就离开了。

Google 云平台负责人:开源是唯一的路

在这之后,我面试了几家公司,拿到了三个offer,一个是VMware,一个是Google,还有一个就是非死book。当时我对 Google的印象特别好,因为我很喜欢搜索这个功能。我从第一天听说有搜索的时候(那时还没有Google呢),我就开始使用它了,对我来说搜索改变了 我很多。我学计算机比较晚,可能并不算一个典型的工程师,我对很多其他议题都很感兴趣,尤其是一些人文、社会的话题。除了工作,我只要下了班就不会再看计 算机方面的东西。VMware和非死book这两家公司对我来说都不像Google那样有吸引力。我觉得我需要做一个让我感兴趣的东西,然后找一家对 我来说有触动的公司。

我去Google的时候本来是做算法的,后来开始做容器技术,很快我自己也成了技术主管。在Google总有新的东西进来,很多技术是从无到有发展的,这份工作不仅让我感觉很有意思,还很有成就感。

偏见限制了女性程序员的地位

我相信无论在中国还是在美国,女工程师都会相对少一点。我认为这是一个传递途径(pipeline)的问题,最起码在美国是这样。读书的时候,尤其在大学,虽然女性读计算机科学的也没有男性多,但数量还算不少;然而到了工作之中,女性程序员就少很多了。

Google 云平台负责人:开源是唯一的路

至于原因,我认为主要与以下两点:

总体上而言,对于计算机产业中的女性来说,她们的努力(尤其是在年轻的时候)不太容易被别人重视。当一位女性工程师提出一个观点时,无论是在美国还是在中国,即使这个观点是正确的,也很容易被忽略;相反地,同样的观点如果是由一位男性工程师说出来时,就算他不一定比她说的好,大家还是会附和。

在我做第一份工作的时候,曾经遇到过一个中国的男性工程师,他是一个QA,而我是个开发者。他看见我非常不爽,质疑我这样一个女生做得了程序员吗。 我当时觉得,怎么会这样?他为什么会这样说?虽然我今天已经百毒不侵了,当时还是会被这样的事情所影响。不过,虽然我心里不高兴,但我从不会质疑自己作为 一名程序员的资质和能力。

此外,家庭教育问题也是很重要的原因。从女孩读书的时候开始,父母可能就会告诉她,身为女性要更重视家庭,做程序员很辛苦。实际上,虽然程序员的工作时间相对长一些,但是很灵活,女性也完全可以在完成工作的同时享受生活。

我个人认为,做任何事的核心理念就是不劳而获是永远不会成功的,除非你根本就不想做这件事。而我们的父辈们却一直在灌输给我们这样一种思想:女性找 工作也要兼顾家庭,最好钱多事少离家近。这在我看来根本是不可能的,有得就要有失,我一直相信这一点。所以做任何工作,如果想要有成就感和满足感,你都需 要投入心力,无论是做工程师还是其他工作。

我认为,是偏见让很多女性不愿意去做一名软件工程师,并且由于在这一行业里确实女性相对较少,反而加深了这些偏见。但是我觉得时间久了,这些偏见都是可以被克服的。Google在近年来对女性工程师所占员工人口比例的问题上就越来越重视。在我印象中,刚加入Google时的年会上,可能在100多人里面就只有我一位女性;但是现在,同样在100个工程师里面可能有十几位女性。

时代都是往前走的,我们不受影响了就好了,除了你自己没人能挡住你的路。

来源:雷锋网    原文:http://www.leiphone.com/news/201509/THxjnrCWZMkCAniC.html 作者: 图灵访谈