Google的技術(shù)是云計(jì)算開源化的主要推動(dòng)力之一,Hadoop、NoSQL類數(shù)據(jù)庫等開源軟件都源于Google的技術(shù)。但搜索巨頭本身對(duì)于自身技術(shù)的開源態(tài)度卻有點(diǎn)糾結(jié)。這種糾結(jié)主要源于不想放棄自身的這一競(jìng)爭(zhēng)優(yōu)勢(shì),但是在微軟、VMware、EMC等紛紛擁抱開源的大趨勢(shì)下,Google終于意識(shí)到在開源的環(huán)境下推進(jìn)自己云戰(zhàn)略的重要性,哪怕把它最大的秘密部分開源化也在所不惜,現(xiàn)在這一戰(zhàn)略已經(jīng)初見成效。
Craig McLuckie把想法告訴了Urs Hlzle,這位Google全球數(shù)據(jù)中心網(wǎng)絡(luò)的監(jiān)管人并不喜歡這個(gè)想法。
McLuckie跟Google西雅圖分部的兩位工程師希望把Borg再造成一個(gè)開源項(xiàng)目。Borg是管理調(diào)度Google從搜索到地圖等一切服務(wù)所需資源的軟件工具,正是有了它,Google才能將一個(gè)個(gè)計(jì)算任務(wù)打包分配到它龐大的全球網(wǎng)絡(luò)。多年以來,Borg一直是Google保守得最好的秘密之一。而McLuckie想把它的藍(lán)圖(至少是部分藍(lán)圖)共享給互聯(lián)網(wǎng)。
“我們第一次去找Urs時(shí),他對(duì)這個(gè)想法實(shí)際上是不高興的,”McLuckie說:“因?yàn)槲覀円龅氖前堰\(yùn)營(yíng)Goolgle的秘密武器作為開源技術(shù)拱手讓人。”
但Hlzle等Google要員最終批準(zhǔn)了這一項(xiàng)目—Kubernetes這個(gè)名字起源于古希臘,是船長(zhǎng)或者駕駛員的意思。今天是它推出1周年的日子,過去12個(gè)月,已有超過370名程序員給項(xiàng)目提交了12500份“commit”,他們當(dāng)中大部分都不是Google的人,其中就包括3名頂級(jí)貢獻(xiàn)者。
Kubernetes代表了Google在云計(jì)算領(lǐng)域與Amazon、微軟等努力進(jìn)行競(jìng)爭(zhēng)時(shí)的戰(zhàn)略轉(zhuǎn)變。傳統(tǒng)上,Google對(duì)于驅(qū)動(dòng)其在線帝國(guó)的基礎(chǔ)技術(shù)的保護(hù)是非常嚴(yán)的—Borg就是很好的一個(gè)例子,且從某種程度上來說仍然如此。但現(xiàn)在Google已經(jīng)是一家對(duì)云計(jì)算態(tài)度非常認(rèn)真的公司,它正在邀請(qǐng)別的公司和開發(fā)者在自己的基礎(chǔ)設(shè)施之上做網(wǎng)站、開發(fā)應(yīng)用(注:類似Amazon當(dāng)年做AWS的路子),因此是封閉的、不公開的。邀請(qǐng)其他公司在其基礎(chǔ)設(shè)施之上開發(fā)運(yùn)行應(yīng)用,所以開源更多的是面向整個(gè)軟件社區(qū)做出的一種平等交換。
Kubernetes最初是由McLuckie和其他兩位工程師Joe Beda 、Brendan Burns一起構(gòu)思的,他們都是Google云服務(wù)的開發(fā)團(tuán)隊(duì)成員。在他們看來,Kubernetes這個(gè)開源項(xiàng)目開源推動(dòng)開發(fā)者使用Google Compute Engine,這項(xiàng)云服務(wù)可為外部構(gòu)思和開發(fā)者提供“虛機(jī)”,在虛機(jī)上面幾乎可以跑任何代碼,而Kubernetes則為代碼的跨環(huán)境運(yùn)行(云服務(wù)、本地?cái)?shù)據(jù)中心)提供有效的管理手段。Hlzle最終同意這一點(diǎn)值得犧牲掉保留自己代碼的優(yōu)勢(shì)。“云對(duì)于Google來說絕對(duì)是勢(shì)在必行,”McLuckie說:“我們必須用新的方式運(yùn)營(yíng)。我們必須把自己的專長(zhǎng)帶給社區(qū)。”
Google的演進(jìn)
Google的舉動(dòng)也是對(duì)云計(jì)算崛起所推動(dòng)的更大轉(zhuǎn)變的響應(yīng)。現(xiàn)在開發(fā)者很容易就可以在一堆機(jī)器上面開發(fā)軟件,而且往往都是用開源的。在那么多機(jī)器上跑專用軟件的成本高昂,滿足特定需求很困難。無論是提供像Google Compute Engine這樣的服務(wù),還是為此類服務(wù)開發(fā)軟件,現(xiàn)在的云公司都必須擁抱開源。微軟也已經(jīng)意識(shí)到這個(gè)不爭(zhēng)的趨勢(shì),為了推動(dòng)其Azure云計(jì)算服務(wù)的發(fā)展而擁抱開源。VMware和EMC也已經(jīng)這樣做了。
但Google的態(tài)度有點(diǎn)掙扎。它的技術(shù)是云計(jì)算領(lǐng)域開源力量崛起的主要推動(dòng)力之一。只是這家公司一直對(duì)開源運(yùn)動(dòng)保持著適當(dāng)?shù)木嚯x,F(xiàn)在它走得更近了。
過去10年,Google開發(fā)出軟件來管理軟件在其成千上萬臺(tái)機(jī)器上的運(yùn)行。它疑心很重,把運(yùn)行大規(guī)模機(jī)器的能力視為自己的競(jìng)爭(zhēng)性優(yōu)勢(shì),不想讓人看到這一軟件的面目。然后,過了幾年,Google會(huì)時(shí)不時(shí)公布1、2篇相關(guān)技術(shù)的論文,開源界就會(huì)開始山寨Google的技術(shù),很多技術(shù)都是這樣,如MapReduce催生了Hadoop,BigTable公布出來后,一大堆“NoSQL”數(shù)據(jù)庫就如雨后春筍般冒出來了。
Borg的情況大抵也是一樣的。幾年前,Twitter和加州大學(xué)伯克利分校的工程師開發(fā)了一款名為Mesos的工具,現(xiàn)在,它成了Twitter、Airbnb等知名互聯(lián)網(wǎng)服務(wù)的基礎(chǔ)。還有好些項(xiàng)目也在圍繞著Docker容器技術(shù)(Borg的運(yùn)作也是這樣,將軟件打包進(jìn)軟件“容器”然后通過Google網(wǎng)絡(luò)到處交付出去)開發(fā)類似的工具。
不過現(xiàn)在在云業(yè)務(wù)需求等力量推動(dòng)下,Google正在改變角色。它分享出來的不僅僅只是一篇研究論文,把一些小的在線基礎(chǔ)設(shè)施開源,而是把整個(gè)體系轉(zhuǎn)變成開源項(xiàng)目(至少在某種程度上)。
如Burns所述,他和Beda 、McLuckie都看到了有很多其他項(xiàng)目正在利用Borg及容器技術(shù)的想法,所以他們認(rèn)為Google可以幫助推進(jìn)這件事情。“我們感覺大家在把一塊塊碎片拼接完整是遇到了困難,”他說:“我們有那個(gè)圖案。我們有10年的經(jīng)驗(yàn),知道怎么把碎片拼到一起。”
誠(chéng)然,Kubernetes并不是開源的Borg。它沒有Borg或者Borg的繼任者Omega那么復(fù)雜。從目前情況來看,它不能管理那么多臺(tái)機(jī)器。“我們?nèi)栽诔咏麭org同等規(guī)模努力,”Beda說:“Kubernetes初期關(guān)注的焦點(diǎn)是核心概念要對(duì)。”
但是Borg和Omega的部分開發(fā)者也在做Kubernetes,其中包括Uber的工程師Eric Brewer、John Wilkes及Brian Grant。有做過的人來做Kubernetes對(duì)于這個(gè)開源項(xiàng)目來說意義重大,而這個(gè)項(xiàng)目的未來目標(biāo)是糾正Borg、Omega的錯(cuò)誤,最終超越這兩位前輩。
在這個(gè)對(duì)開源如此器重的世界里,這是Google參與競(jìng)爭(zhēng)的最好方式。對(duì)于很多人來說,容器就是軟件開發(fā)的未來。而Google現(xiàn)在正扮演著這個(gè)未來的領(lǐng)導(dǎo)角色。
隨便跑
不過,曾在Pivotal幫助開發(fā)過類似系統(tǒng)的Mark Kropf質(zhì)疑Google對(duì)這個(gè)項(xiàng)目的態(tài)度究竟有多認(rèn)真,他指出Beda已經(jīng)離開了公司。而云服務(wù)提供商Digital Ocean的CEO Ben Uretsky則認(rèn)為,Kubernetes等系統(tǒng)的應(yīng)用情況并沒有那么廣泛。“容器技術(shù)尚未成熟,”他說:“我們還處在炒作周期的頂峰。”
但無論Kubernetes的命運(yùn)如何,從很多意義上來說,它仍指出了軟件開發(fā)的未來。
Google在自己的數(shù)據(jù)中心使用著自己的軟件容器。不過1年前推出Kubernetes時(shí),它找到開源的Docker作為搭檔。當(dāng)Docker母公司尋求將自己的容器技術(shù)與某些自己的軟件工具進(jìn)行捆綁時(shí),Google和Kubernetes項(xiàng)目卻開始擁抱Docker的替代品Rocket—一個(gè)完全獨(dú)立的容器格式。
McLuckie強(qiáng)調(diào),Kubernetes現(xiàn)在同時(shí)支持Docker和Rocket。他希望業(yè)界最終能回歸到一個(gè)獨(dú)立的容器格式去,但他解釋說這不是選邊站。他說,Kubernetes“應(yīng)該成為瑞士。”聽起來有點(diǎn)理想主義,但這是云公司必須干的事情:提供開源軟件,然后隨便別人怎么用。McLuckie 說:
正在發(fā)生的這場(chǎng)顛覆要比任何一家公司都要大。