Kubernetes負責人Dawn Chen:開源是惟一的路

非商業轉載請註明做譯者、出處,並保留本文的原始連接:http://www.ituring.com.cn/article/203525程序員

Dawn Chen是谷歌雲平臺軟件工程師,目前負責Kubernetes項目。Dawn有超過8年的Google工做經驗,負責過多層堆棧,包括內核,機管理,羣集節點,管理,調度。供職谷歌前,她曾任職於Veritas和Symantec。圖靈訪談的記者有幸在CNUTCon全球容器技術峯會現場採訪了Dawn。從大學開始在美國學習計算機的她,用中文講解計算機術語有些困難。然而在中國和美國,不一樣的語言和文化共通的倒是對女工程師的偏見和挑戰。勇敢叛逆如她,Dawn歷來沒有質疑過本身做爲一位工程師的資格和能力。她相信「偏見都是能夠克服的,時代都是往前走的」,除了你本身沒人能擋住你的路。web

圖片描述

叛逆如她

除非你不想作,不想作就算了,想作好的話就不可能坐享其成。面試

問:您是從何時開始編程的?算法

我其實從小就很反對編程。爲何?可能由於我從小就比較叛逆。我父母是大學教授,由於我理工科特別好,因此他們就但願我去學計算機,他們以爲這是件比較容易的事。可是他們越想讓我學我就越不想學。 編程

我原來是學數理統計的,是數學系的。到了美國以後我申請統計系沒有拿到獎學金,可是計算機給了我獎學金。那個時候就不須要叛逆了,因而我就去學了計算機。安全

這段經歷如今對個人影響可能就是,我在頭腦中都是用英文來思考計算機問題的,可是對於生活中任何別的事,我都是用中文思考的,分得很清楚。微信

問:能談一下您在美國學習計算機的經歷嗎?網絡

我後來去美國學了計算機,那個時候由於我數學很好(我原本是學數學的),因此就以爲計算機真的很容易。後來隨着學習愈來愈深刻,我發現計算機也變得越學越有意思了,尤爲當我能用計算機解決生活中的實際問題時。那時候統計在各個領域尚未應用,由於尚未大數據處理,因此統計學畢業的話,可能只能去氣象、製藥廠,或者是金融機構。由於用計算機寫程序解決的都是生活中的問題,我能夠把問題自動化、模擬化,因此當時我也很高興本身學了計算機。架構

我在美國研究生畢業的時候,正好遇上2000年第一次互聯網泡沫。那個時候我也不知道爲何,不少人都去作web,多是由於既簡單,來錢又快。雖然我也去了硅谷,可是由於我比較叛逆的性格,我就不太想作web,我不太願意作你們以爲接下來會很火的東西。性能

因此我當時就去了Veritas的一個研究實驗室,Veritas後來被Symantec買進去了。這個實驗室實際上主要是作存儲的,就是給企業作集羣管理。可是Veritas自己沒有數據中心,它實際上仍是傳統的軟件公司,把本身的東西打包賣出去。

咱們當時的CTO很是有想法,咱們作的項目叫效用計算,直到今天,計算機都沒有辦法實現效用計算。可是在15年前,咱們在Veritas組建了用來作效用計算的很大的集羣,那個時候我主要作算法。咱們用的都是當時最早進的技術,好比端對端,咱們想要經過端對端網絡去進行更有效地鏈接。咱們作了一些頗有趣的東西,這些技術對我今天的工做來講都頗有價值。

我在Veritas作過好多項目,可是當時讓我印象最深的是,咱們每個項目作完,都沒有辦法部署出去。由於Veritas是以研究爲導向的軟件公司,而不是谷歌那樣的服務型公司,因此這些項目既沒有辦法跟公司已有的軟件結合在一塊兒,也由於Veritas沒有面向外界的基礎設施,因此不能跟公司的基礎設施結合。最後形成咱們不少有意思的研究都沒有辦法應用。後來研究實驗室也愈來愈不景氣,由於CTO走了,而後公司被Symantec買了,也變得愈來愈以商業爲導向。

因而我就離開了。我面試了幾家公司,拿到了三個offer,一個是VMware,一個是谷歌,還有一個就是Facebook。當時Facebook還很早,尚未IPO,我同事介紹我去的是研究實驗室。個人同事離開比較早,他是Facebook裏面的一個主架構師。他介紹我去的時候,就跟我說,他以爲Facebook的工做確定能賺錢,可是喜不喜歡不必定,他後來也確實發財了。

我本身雖然有Facebook帳戶,可是我歷來不用。然而從我讀書第一天據說有搜索的時候(那時尚未谷歌),我就使用搜索,對我來講搜索改變了我不少。我學計算機比較晚,可能並不算一個典型的工程師,我對不少其餘議題都很感興趣,尤爲是一些人文、社會的話題。除了工做,我只要下了班就不會再看計算機方面的東西。因此對我來講搜索是很是有用的,我對谷歌的印象特別好。

而VMware對我來講,是一個很是技術的公司,那時候虛擬技術和虛擬機其實都很火。而Facebook從錢的角度上說確定也很好,我也相信它會成功。可是這兩家公司對我來講都不像谷歌那樣有吸引力。我以爲我須要作一個讓我感興趣的東西,而後找一家對我來講有觸動的公司。我相信谷歌的理念,因此就去了谷歌。

問:去谷歌作的是什麼工做?

我去谷歌的時候原本是作算法的,同一個組裏有人在作系統網絡,有人在作算法,還有人在作調度。你們都以爲算法更酷,更有意思。我第一次聽一位技術主管講容器技術時,我內心想:好酷,將來爲何不能用容器來取代虛擬機?因而我聯繫到了那位技術主管,他雖然是技術主管,可是那時候只有他一我的在幹。他問我願不肯意幫他作這個,我說好,我正好也想學。我當時其實也沒有以爲我會一直作這個技術,我想有一天我仍是會回去的吧。

隨着工做展開,我感受越作就越有意思,總有新的東西進來。由於這種技術是從無到有發展的,因此咱們慢慢加入了愈來愈多的容器管理特性。很快我本身也成了技術主管。由於谷歌是一家技術驅動的公司,因此我能夠作不少決定。這些決定會形成不少影響,對公司其餘人作的不少東西也會有影響。這份工做不只讓我感受頗有意思,還頗有成就感,因而我就這樣一直作了下去。

問:您認爲女性程序員數量比較少的緣由是什麼?

我早晨起來穿衣服的時候會注意讓本身穿得好看一點,我相信我老公也會注意到。可是我在工做中實際上會忘掉本身的性別。

話說回來,我相信不管在中國仍是在美國,女工程師都會相對少一點。我認爲這是一個傳遞途徑(pipeline)的問題,最起碼在美國是這樣。讀書的時候,尤爲在大學,雖然女性讀計算機科學的也沒有男性多,但數量還能夠。然而到了工做中、產業中以後,女性就會少不少。

整體上對於計算機產業裏面女性來講,她們的努力(尤爲在年輕的時候)不太容易被別人重視。好比當她提出一個觀點的時候,不管是在美國仍是在中國,別人都更容易忽略她的觀點,就算她是對的,而後當另一個男性工程師把同一個觀點說出來時,就算他不必定有她說的好,你們仍是會附和。

在我作第一份工做的時候,遇見了一箇中國男性工程師,他是一個QA,而我是個開發者。他看見我很是不爽,他說一個年輕漂亮的女生,作得了程序員嗎?我當時以爲,怎麼會這樣?他爲何會這樣說?雖然我今天已經忘掉這些事情了,有些時候可能就是百毒不侵了,但當時我仍是會被這樣的事所影響。我雖然內心有些不高興,可是我不會質疑本身,由於我從小到大數理化都是年級的第一名,我歷來不會以爲我不能作程序員。我相信我能夠的。

從另外一個方面來講,我認爲是家庭教育的問題。從讀書的時候開始,家長可能就會說女孩子作這種工做很辛苦,女孩子要更重視家庭。其實,雖然程序員工做時間長一些,可是也很靈活,你徹底能夠在完成工做的同時享受生活。我我的以爲,作任何事的核心理念就是坐享其成是永遠不會成功的。除非你不想作,不想作就算了,想作好的話就不可能坐享其成。而父輩們一直在灌輸給咱們一種思想,女性要找工做,要照顧家庭。既要離家近,掙錢多,還要事少,在我看來這是根本不可能的。有得就要有失,我一直相信這一點。

因此我以爲作任何工做,若是想要本身感受到很滿意,有成就感和知足感,你都須要投入心力,不管是作工程師仍是其餘工做。我以爲是偏見讓不少女性不肯意去作軟件工程師,反過來在工做中也確實由於女性相對較少,從而加深了這些偏見。可是我以爲時間久了,這些偏見都是能夠克服的。時代都是往前走的,不受影響了就行了。

谷歌自己是很重視這一點的。我剛加入谷歌的時候開年會,我印象很深,可能在100多人裏面就我一位女性。可是如今就多了,一樣在一百個工程師裏面可能有十幾位女性。

問:做爲一位Google的員工,您怎麼看Alphabet?

這徹底是我我的的見解,我以爲這是一個很聰明的作法。我剛纔也提到了谷歌是一家技術驅動的公司,谷歌很鼓勵創新,可是同時谷歌也是一家上市公司,它須要對投資人負責。投資有不少種類,有些投資人看中了谷歌的主流業務,好比說廣告、搜索。當他去買谷歌股票的時候,看到財政報告上說谷歌花了一堆錢在技術上,他會問:谷歌爲何要花那麼多錢?谷歌在作無人駕駛汽車,作氣球,作生命科學,我都以爲谷歌很棒。雖然這些東西我不懂,可是做爲我一個工程師,我很是享受在谷歌工做。但反過來講,我也很支持也能理解華爾街,當投資人作投資的時候,他看重的是谷歌的主流業務和賺錢的能力,而不是谷歌作創新的能力。同時對於創新領域的VC來講,他們也能夠選擇不把投資綁在主流業務上。

另外我以爲這也是一種宣傳,讓你們以爲谷歌是一家創新的公司。Alphabet下面的某些子公司是很是創新的,在將來領導技術前沿上也是很是活躍的。同時,對於那些更看重主流業務的人,他們會以爲,谷歌很是專一於本身的核心業務。從另外一方面來講,這也符合谷歌對於管理透明度的要求,對於外界來講錢投在哪裏都是透明的。

開源是惟一的路

咱們相信容器既然能讓谷歌受益,也就能讓別人受益。

問:您如今負責的是Kubernetes哪一個部分?

Kubernetes是一個很大的開源項目,有好幾個負責人,我是其中一個。我負責的主要就是容器技術這部分。除此以外,咱們有負責調度的,負責API的,還有負責整個集羣以及網絡的。我負責的這部分包括管理節點在某臺機器上的實現,以及保障每一個組件的順利運行。對於虛擬機,甚至是裸機來講,咱們須要肯定內核,庫,還有容器技術的調度方式和應用方式。

問:您在全球容器技術大會的一個關門會議上講到了谷歌爲何要開源Kubernetes,能不能把大體內容跟咱們分享一下?

不少谷歌員工在離開了谷歌以後去了其餘公司,好比Facebook、Twitter,或者騰訊。他們中的不少人都會遇到一個問題,新的公司爲何沒有Borg?不少人都問過我:大家的Kubernetes爲何沒有Borg的這個功能、那個功能?可見他們有多麼喜歡Borg,因此有不少人在不一樣的公司去從新作Borg。好比Facebook的集羣管理系統,實際是從谷歌開始的,這個系統很像Borg,包括裏面有些內部名詞都是同樣的。

咱們在幾年前發表了一篇論文,是關於Omega的。Mesos就是基於這篇論文的一個開源項目,這個項目含有一些相似於集羣管理的東西,可是更多着重在調度上,因此Mesos並非一個完整的生態系統。Twitter本身的集羣管理實際就是用的Mesos,再加上一些別的東西作成的一個生態管理系統。對於不少其餘公司來講,也有相似的狀況。

從經驗上看,谷歌過去整體上不怎麼開源,可是卻發表了不少論文,好比說對於業界很重要的MapReduce、BigTable論文。有不少開源的人或者公司以爲論文頗有價值,而後就想要從新裝備這些系統。後來谷歌本身也發現了這點,可是咱們還發現從新組裝的那些系統雖然很像咱們的系統,可是又不像,這些系統其實跟咱們的系統並不兼容,尤爲在API方面。因此做爲一家愈來愈重視雲的公司,谷歌也但願能在雲方面有所做爲。

不少開源項目都創建在谷歌的論文上,可是卻又跟咱們自己的系統不兼容。谷歌以爲這一點很難辦,若是隻是發表論文,而不去作一個真實的系統的話,問題是很難解決的。就算咱們開源API,可是沒有實現,甚至沒有示例實現,那麼API就是不成立的。綜上所述,咱們以爲谷歌應該從新檢視下關因而否開源的決定。並非說谷歌不肯意開源,不然它也不會去發表論文,最重要的問題在於開源須要太多的人力和物力了。

可是反過來講,若是真的要在雲上面作文章,咱們是沒有辦法不開源的。容器技術若是不開源的話,咱們就應該作到讓用戶徹底信任容器技術,可以不擔憂安全問題。若是用戶可以徹底信賴容器技術,咱們就不須要提供虛擬機了,也就是說用戶能夠不須要SSH這樣的機器了。可是咱們作不到,如今的容器技術作不到。並且就算能作到,咱們也沒有辦法去說服使用者,要他們接受純粹的服務而不是一臺機器。用戶會很擔憂:程序到底在哪裏運行?他們會不會偷了個人東西?由於容器技術尚未獲得你們的普遍承認,尤爲在安全性能方面。因此咱們仍是須要賣給用戶虛擬機,那麼用戶就有可能會SSH到一個機器。若是用戶看到一個隱藏的程序在運行,他會很驚慌,由於他不知道我是否是要偷他的商業機密。

那咱們惟一能作的事情是什麼?就是開源。咱們你們都相信不管是谷歌的雲仍是別人的雲,都須要有一個集羣管理。咱們也相信容器既然能讓谷歌受益,也能讓別人受益。

問:Kubernetes跟Borg有不少相同的地方,可是您能說一下它們在設計理念和設計目的上的主要不一樣嗎?

在我看來最主要不一樣就是API。咱們能夠說Borg的高層是描述性的,可是在Borg真正實現的組件之間,其實是命令性的API。在咱們意識到這個問題以後,咱們在設計Kubernetes時就堅持用描述性的API。

還有一點不同的就是,由於使用了描述性API,因此內部實現不須要有很是複雜的狀態機,咱們使用了一個比較簡單的調和控制迴路。所謂描述性就是形容你想要的是什麼狀態,最終要的是什麼結果,而後你的調和控制迴路(也就是控制系統)就知道了這個目標,它會根據如今情況調整,一直驅動達到理想的狀態。好比你在調度的時候,須要考慮有多少個job在運行,job是在什麼狀況下運行,有多少個copy在運行,少了一個copy你就多加一個,多了一個你就殺死一個。這兩點就是主要貫徹在整個設計裏面的原則。

問:Kubernetes開源以後會有什麼變化?它跟Mesos是否是會愈來愈不同?

咱們其實不太關心Kubernetes跟Mesos是否是會愈來愈不同。由於Mesos的調度今天已經作得很是成熟和完善了。與此相對的是,Kubernetes從一開始就是以一個生態系統爲目的而設計的,它有正常檢查、監控、記錄,它有全部的東西。Mesos是基於Omega那篇論文構建的,而Omega的論文的重點就是調度的算法。因此Mesos本身不是一個完整的生態系統,也不是一個集羣管理系統。Mesos能把你要作的東西創建在不少要求上,部署到機器上,可是當你要作升級,須要擴大規模或減少規模時,Mesos是作不到的。Mesos須要跟不少別的東西結合,好比如今的Mesos其實是跟Kubernetes結合的,你可使用Mesos很是酷炫的調度功能,同時也能夠用到Kubernetes本身的集羣管理功能。除此以外,Mesos也跟馬拉松結合。

固然,咱們的Kubernetes也會愈來愈完善,由於算法咱們都知道,咱們本身內部的算法也很複雜。我相信Mesos也會逐漸提高它的東西。咱們都是開源的項目,實際上是種互補的關係,或者說是一種良性競爭的關係。因此將來會怎麼樣?沒有人知道。


更多精彩,加入圖靈訪談微信!

圖片描述

相關文章
相關標籤/搜索