谷歌公開祕密藍圖(Borg)助力雲建設

Kubernetes 的誕生

嚴格說來,Kubernetes 起源於 Google 的內部開源軟件 Borg。Borg 是一個全面的軟件工具,管理着從 Google 搜索到 Gmail 到 Google 地圖等一切軟件,讓公司仔細地在全球範圍內分配計算任務。幾年來,Borg 一直是 Google 的機密。如今,Craig McLuckie 和其它兩位在西雅圖 Google 的工程師同事想要在互聯網上分享 Google 的藍圖——或者說是藍圖的一部分:Borg,將它做爲一個開源項目重建。git

一開始,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 做爲一個主要的例子,對於特定的內容,它仍然是起做用的。可是既然這是一家主業作雲計算的公司——邀請公司和開發人員在基礎設施之上建立和運行他們的網頁和其餘在線應用程序——其更深層次的意義就是把作基礎設施的社區和作軟件的社區融爲一體。oop

McLuckie 以及其餘兩個最早開始構思 Kubernetes 的工程師,Joe Beda,Brendan Burns 也都是建立 Google 雲計算服務的小組成員。他們發現,他們的開源項目促使開發人員使用谷歌 GCE 雲服務(GCE :即 Google Compute Cloud,提供虛擬機服務,這樣除谷歌之外的其餘公司以及其餘碼工也能夠運行幾乎全部的軟件代碼),Kubernetes 在這樣的雲服務基礎上,就可以更有效運行代碼,使用物理機的公司就如同在他們本身的數據中心操做同樣,並且最後,Hölzle 也贊成這麼作,放棄了代碼私有化帶來的好處,而將代碼開源。「對於谷歌來講,雲絕對是頗有必要的,」McLuckie 說道,「咱們要用新的方式來把咱們的專業性帶到社區。」google

Google 進化史

這個舉動迴應了由雲計算帶來的變更。既然開發人員可以在大數量機器的基礎上建立軟件,他們正在使用開源軟件來完成這件事。在這麼多機器上運行軟件花費很高,並且將這些作成模型來配合特定的需求也是十分困難的。因此今天的雲計算公司必須使用開源技術,不論是提供像 GCE 這樣的服務,仍是建立軟件來構成這樣的服務。Microsoft 一樣也意識到這個無可辯駁的趨勢,因而開始努力使用開源技術來推動 Azure 雲計算服務的發展,有更好的前景。VMware 和 EMC 也是如此。雲計算

提及 Google,這裏還有一個額外的曲折故事。Google 技術能夠算是雲計算開源軟件崛起的主要外力之一。雖然以前公司刻意跟這個崛起保持必定的距離,可是如今,它漸漸開始往發展方向靠攏了。
在過去十年中,Google 編譯出來的軟件須要在數百臺機器,或者這些軟件的數據須要在數百臺機器上進行處理。Google 並無公開這個軟件,而是將它看做成本身的一個競爭優點藏起來。而後,幾年發展下來,到時候發佈一篇描述這個技術的論文,外界就會克隆它。不少的工具的發展都是這樣的:包括 MapReduce(催生了開源軟件 Hadoop)和 BigTable(這個軟件帶給咱們「NoSQL」數據庫)。
一樣的事情也發生在 Borg 上。幾年前,Twitter 和加利福尼亞大學伯克利分校的工程師建立了 Mesos 工具,而今天,它支撐起一些大牌互聯網服務的運營,包括 Twitter 和 Airbnb。還有其餘幾個技術也都創建在 Docker 技術的基礎之上,Docker 幫助開發人員將應用程序整齊打包到容器中,而在 Google 網絡上,Borg 也一直是調度容器應用的。spa

可是如今,因爲雲業務的需求,以及一些其餘的壓力,Google 的角色轉變了。它不只僅只是分享一篇研究論文那麼簡單了。也不只僅是在線基礎設施上的開源小塊。在必定程度上,它正在從一個總體的系統轉化爲一個開源的項目。開發

就像 Burns 說的那樣,他和 McLuckie 看到那麼多在運行的項目,Beda 和 McLuckie 探究 Borg 和容器背後的意義,他們以爲 Google 能夠推動事情的進度。「咱們感受,全部這些拼圖的方塊散落在那裏,而人們正在慢慢地將他們拾起並拼在一塊兒,」他說,「咱們有這盒拼圖。並且從咱們十年的經驗來看,咱們也知道如何將他們拼湊起來。」kubernetes

能夠確定的是,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 說道,「比任何一家公司的規模都要大。」

 

原文連接:http://www.wired.com/2015/06/google-kubernetes-says-future-cloud-computing?sukey=3997c0719f1515209c1b4a22999c82c1f4939271a748a0d9284f1bb032aea389f2e42a9a5d11f897bc015df9d8f42c47

相關文章
相關標籤/搜索