2014 年,Google 公布開源項目 Kubernetes,它由 Joe Beda、Brendan Burns 以及 Craig McLuckie 帶頭創建,并于 2015 年 7 月 21 日正式發布 Kubernetes v1.0 版本。
微軟 Azure在 2014 年便引入 Kubernetes 以及 libswarm,開發者可以在 Azure 上使用 Kubernetes 管理 Docker 容器。然而,將 Windows 的應用運行在 Linux 上,或者將 Linux 應用運行在 Windows 上在當時無法實現。
2016 年 12 月, Kubernetes 1.5 的發布,上述 Linux 和 Windows 一起運行的夢想終于得以實現。
2017 年 4 月 11 日,微軟宣布收購容器平臺 DEIS。DEIS 基于 Google 發布的 Kubernetes 技術研發了多款熱門應用開發和管理工具。本次收購再次證明,Kubernets 正迅速成為事實標準。
2014 年微軟宣布支持 Kubernetes
Kubernetes 眼下已成為眾多容器管理系統核心——比如 CoreOS 公司的商務平臺 Tectonic。最近,微軟也宣布已將 Kubernetes 整合到其公有云上。
“現在,我們支持 Kubernetes,它會比原來更加好用,并且宣布 Azure 容器服務的預發布版本,”Azure 的計算總監,Corey Sanders 在微軟 Azure 發布的時候說道,“對 Kubernetes 本地有更高等級的支持,會為容器編排引擎提供了另外一個開源選擇。”
微軟也支持 Docker Swarm 和 Mesosphere 的 DC/OS,但是似乎 Kubernetes 更加有掌控容器編排界的趨勢。隨著事物的發展速度變快,Kubernetes 可能并非容器界的唯一一匹快馬,但是它確實是很多廠商的選擇。它的地位至此,值得深思。
開源軟件公司 Red Hat 的高級產品經理,同時也是決定將 Red Hat 開源 OpenShift PaaS 進行標準化的小組成員之一的 Joe Fernandes 對容器管理系統非常了解。
2013 年,該公司想要創建一個本土的容器管理系統,那時,公司看到了 Mesos,并且跟 Google 討論 Kubernetes 的開源計劃,Joe Fernandes 說,“就功能上來說,Kubernetes 遠遠超過 Mesos 和 Marathon。”
Gartner 研究副總裁 Richard Watson 說,“這表明微軟也希望成為 Kubernetes 生態系統內的重要貢獻者。用戶期望 Kubernetes 在 Windows 上正常工作,未來能夠有 Windows 的集群功能,這對混合環境的 IT 部門很重要。”
Kubernetes 如何從眾多容器編排工具中脫穎而出
但是對于 Fernandes 來說同樣重要的就是 Google 在容器上的繼承,他說,“就像他們之前說的那樣,他們運行的所有東西都已容器化。Kubernetes 不是 Borg(Google 的資源編排軟件),但是編寫 Kubernetes 花費了他們過去使用 Borg 十幾年的經驗。
另外一個很重要的東西就是(或許對于像 Red Hat 這樣的開源公司來說并不意外),Kubernetes 項目現在隸屬于 CNCF 旗下,Google 則是開源項目的贊助商之一(在 Fernandes 看來,這絕對是一個加分項)。“我們在 Kubernetes 開源之前就跟 Google 聊過,但是現在 Kubernetes 項目發展很快,有很多廠商支持它,它增加新功能的速度非常快,能夠運行很多不同類型的工作負載。”Fernandes 說道。
相比之下,他指出,雖然 Mesos 有 Apache 的支持,但是沒有像 Kubernetes 那么多廠商支持。“只有 Mesosphere——雖然有幾個廠商確實在云的選擇(比如微軟)上提供了幾個選項。”
Fernandes 認為原因是 Mesos 的代碼庫不容易拓展,也不容易在它上面創建服務。他說,“我覺得他們的開源社區做得不太好。”
在他認為,Kubernetes 最大的競爭對手是 do-it-yourself 實現方法。但是現實就是,容器領域擴張速度非常快,這也使得實現方法不切實際。
Fernandes 說,“Kubernetes 每年更新 4 次,Docker 每年更新 3-4 次,如果自己動手創建這些解決方法會非常耗時間,所以大多數企業都選擇更有效率地創建應用以及讓第三方公司來創建編排平臺。”
現在有一些容器編排平臺供你選擇。按照道理來講,Me sos 和 Docker Swarm 短時間內是不會被淘汰掉的。但是 Kubernetes 也有理由繼續擴張式發展。
目前,類似于像 Tectonic 這樣的平臺,以及完全開源解決方案(比如 OpenShift)都是建立在 Kubernetes 的技術之上的,未來,會有更多的產品(不僅限于上述兩種產品類型)選擇 Kubernetes 作為底層技術。
Kubernetes 的優勢
Kubernetes 并非市唯一的容器管理平臺(其他還有 Docker Swarm 或 Mesos 等),但它是行業首選。這是為什么呢?
從一個高層次角度看,Kubernetes 吸引人的一點是它提供了一個平臺,實現容器化應用程序的編寫并在各類型云基礎設施上運行。它將公有云與私有云之間的復雜基礎設施差異抽象化。并且,Kubernetes 下一步可以讓開發人員運行任何適合在 Kubernetes 運行的應用程序。Box 的合伙人 Sam Ghods 認為只要一個二進制文件可以運行,那它就能在 Kubernetes 上運行。
使用 Kubernetes,開發人員可以快速地部署應用程序,同時無須面對傳統平臺所具有的風險(想象一下跨多操作系統環境的橫向擴展)、動態地擴展應用程序以及更佳的資源分配。
推動 Kubernetes 的另外一個原因,是企業硬件使用率的下降。有些公司報告說,由于容器的輕量特性以及(相比傳統架構)更快速殺掉未使用的實體,對硬件的需求降低了 40-50%。eBay 是 Kubernetes 著名的支持者及用戶,它聲稱在轉換到該平臺后服務器的開銷支出急劇減少。
Kubernetes 的最大的優勢之一是,它面向的是社區而不是一個技術規范,這讓它的功能更加強大。Google 將其作為一個開源項目發布,獲得超過 1 千個社區貢獻者及 3 萬 4 千個提交的支持。其社區比 Mesos(第二大的競爭社區)要大 5 倍,比所有競爭社區加起來還大。
Kubernetes 的弊端
Kubernetes 在圈內廣受贊譽,但是它自身也有缺點。當涉及到(大規模)初始部署的時候,設置起來步驟復雜、操作困難。而且它需要有特殊技能的工程師來操作,這樣的人才在現目前的工程領域里還比較難找。
其次,Kubernetes 對于容器來說,是一個第三方管理系統。容器所歷經的弊端和成長,對 Kubernetes 所提供的服務也會有影響。
調度器領域現在缺少 Kubernetes。默認設置下,Kubernetes 規劃器依賴于由應用程序提出的資源分配需求,并不會考慮實時消耗情況。這樣操作,每個節點上會產生資源碎片。
最后一點,能夠在容器中運行的負載領域會限制 Kubernetes 被普及,但是這個問題 Kubernetes 眼下還無法解決。鑒于崩潰的傾向,很多工程師猶豫要不要在容器中運行 “關鍵任務” 負載,畢竟存儲數據并不是容器的設計初衷。慣例是,大家會使用那些在崩潰時不會在容器內引起宕機的應用程序。
Kubernetes 的未來
即使有這樣那樣的缺點,也不阻擋不了像 Goldman Sachs、Box、SAP 和紐約時報等公司使用 Kubernetes 的步伐,他們將 Kubernetes 平臺列入了他們下一個數據中心的計劃。
應用程序是很多商務的血液。很多公司正在努力滿足日益加快的部署時間和高質量應用程序的需求。這些需求就是開發人員為什么要涌向容器的原因。隨著容器技術的爆發,Kubernetes 在市場中也找好了自己的定位。平臺領域還有很多潛在性能可以挖掘,但是如果規模變大的還,它是很難管理的。在產品中,初始設置和大規模運行 Kubernetes 之間存在著巨大的鴻溝。在接下來這一年中,第三方管理平臺之間的競爭將會很激烈。對于 Kubernetes 來說,不偏離它過去所做的成就顯得尤為重要。如果社區能夠合理地對平臺進行擴容,那么 Kubernetes 的未來將無可限量。
Kubernetes 2017 發展趨勢
2016 是 Kubernetes 作為開源容器編排工具在技術圈瘋狂圈地的一年。世界范圍內成千上萬的代碼貢獻者都在爭相為 Kubernetes 貢獻功能。越來越多的公司選擇 Kubernetes 作為最佳工具,實現在生產環境中容器化微服務的高可用。
版本發布記錄:2016 年 3 月 16 日發布 1.2 版,7 月 1 日發布 1.3 版,9 月 27 日發布 1.4 版,12 月 14 日發布 1.5 版:
據上圖數據來看,2016 年 Kubernetes 穩定版發布 34 次,發布次數相比 2015 年增加了 112.5%,平均發布間隔為 11 天。2016 年度,K8S 連同 alpha 版和 beta 版共計發布 111 次。
(Kubernetes 2017 版本發布時間線)
2017 年,Kubernetes 預計發布 4 個版本:1.6、1.7、1.8 和 1.9。Github 上顯示,1.6 版本將在三月發布,發布頻率基本上保持 3 個月一更的狀態。
據悉,很多應用使用 GPU 可以提升效率,所以 Kubernetes 上游計劃在其 1.6 發行版本中加入 GPU 功能,提升應用程序運行效率。