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