2017,容器圈熱鬧的一年
2017年是容器生態(tài)發(fā)展上具有里程碑意義的一年,AWS、Azure和Alibaba Cloud都相繼在其原有容器服務(wù)上新增了Kubernetes支持,而Docker也在今年10月宣布同時支持Swarm和Kubernetes。有人說,容器編排大戰(zhàn)就此宣告結(jié)束。那么,Google的Kubernetes為何發(fā)展如此迅猛,而Docker公司為何改變了最初的決策,如此紅火的容器生態(tài)發(fā)生了怎樣的變化?
Kubernetes的"開掛"之路
2017年Kubernetes共發(fā)布了四個版本,在多用戶、多負(fù)載、安全性、使用易用性等做出了改進:
Kubernetes 1.6伸縮性SLO支持包含5000個節(jié)點(15萬個Pod)的集群,可以將多個Kubernetes集群結(jié)合并通過單獨的API端點使用,發(fā)布一系列高級調(diào)度和全面的存儲自動化功能。
Kubernetes 1.7推出Network Policy API,并加強了網(wǎng)絡(luò)安全性,以beta版提供了存儲和由狀態(tài)工作負(fù)載的管理、API聚合層。
Kubernetes 1.8版本在安全方面做出了努力,曾經(jīng)在1.6版本處于beta狀態(tài)的基于角色訪問功能已經(jīng)穩(wěn)定,新增beta狀態(tài)的Pod橫向自動伸縮自定義功能,允許源碼樹外(out-of-tree)的卷驅(qū)動,架設(shè)Kubernetes集群的命令kubeadm加入了集群升級的支持。
Kubernetes 1.9版本全面提供了App Workload應(yīng)用編程接口、新增對Windows系統(tǒng)的支持、并在存儲方面新增了Container Storage Interface功能。
Constellation Research公司首席分析師、副總裁Holger Mueller表示,CSI的演化可能是目前Kubernetes最重要的新功能。他指出,Kubernetes在過去幾年中實現(xiàn)了跨越式的發(fā)展,設(shè)定了一個非常高的標(biāo)準(zhǔn),成為一個快速贏得關(guān)注、"不到兩年時間內(nèi)從零到發(fā)展成為明確領(lǐng)導(dǎo)者"的標(biāo)準(zhǔn)。
Kubernetes于2014年6月開源,在Docker公司推出著名開源項目14個月之后。早期Kubernetes受到了Google內(nèi)部Borg系統(tǒng)的影響,Google稱其已經(jīng)使用了十余年容器化技術(shù),而坊間流傳Borg才是Google的內(nèi)部容器管理系統(tǒng)。早在2015年,Kubernetes還尚不如現(xiàn)在般成熟,其發(fā)布版本等相關(guān)消息也很少被業(yè)界提及。而2015年7月,Google做了一個非常明智的決定,與Linux基金會合作創(chuàng)立CNCF基金會(Cloud Native Computing Foundation)并捐獻Kubernetes作為種子項目。再往后,Kubernetes在開源社區(qū)中呼聲不斷升高,各大IT巨頭相繼加入CNCF基金會,從此Kubernetes進入了勢不可擋的發(fā)展期。
Docker的變革
Docker在2017年也是動作不小,先是4月份將項目重新梳理并拆分為Moby和LinuxKit,再是10月份宣稱同時支持Swarm和Kubernetes。
雖然更名為Moby讓廣大開發(fā)者一片嘩然,但是Rancher的Darren Stepherd在其tweet中總結(jié)到:"被Moby困擾了嗎?簡單說,這對Docker的使用者而言沒有什么變化。這樣的項目在內(nèi)部做了改變,可以幫助如Rancher Labs的系統(tǒng)構(gòu)建者。"Docker公司經(jīng)過此番改革之后,使用者可以通過需求定制一款自己的容器系統(tǒng);而Docker二進制文件并沒有改變,用戶并不會受到影響。

2017年10月DockerCon上傳來另一重磅消息,經(jīng)過與Google一年的合作,Docker宣布支持Kubernetes,可以在同一個集群中運行Kubernetes和Swarm。大會邀請到了Kubernetes 核心作者 Tim Hockin,他在大會上說道"如果沒有Docker,就沒有Kubernetes'這種說法并不夸張。在大家看來,容器技術(shù)發(fā)展四年,已經(jīng)很久了。但是,實際上今天建立分布式系統(tǒng)依然很難,開發(fā)者們依舊很難一起快速地搭建可靠的、可擴展的應(yīng)用程序。未來還有很多需要做的事情,我相信:這僅僅是一個開始,接下來(雙方的)合作一定會給大家?guī)砀唷?quot; 而Docker創(chuàng)始人Solomon Hykes則表示"漸漸地我們意識到,我們是同樣的一群人,關(guān)注的是同樣的事情,我們爭論并希望解決的都是同樣的問題。我們就像一個大家庭,這次其實更像是家庭的團聚。"
12月,Docker拆分Docker Engine后捐獻的containerd也正式發(fā)行1.0版本,添加了包括創(chuàng)建壓力測試系統(tǒng)、垃圾收集和填充內(nèi)存使用等性能改進。這意味著Docker兌現(xiàn)了他一年前的承諾,containerd是可以用于工業(yè)級的容器運行時標(biāo)準(zhǔn)。

CoreOS重新啟程
在Docker推出其火爆的開源項目之后,CoreOS于2013年10月開源了其Container Linux,一款基于Linux Kernel的輕量級操作系統(tǒng),該系統(tǒng)旨在為集群部署提供基礎(chǔ)架構(gòu),同時側(cè)重于自動化、易于部署應(yīng)用程序、安全性、可靠性和可擴展性。作為輕量操作系統(tǒng),Container Linux僅提供在軟件容器內(nèi)部署應(yīng)用程序所需的最小功能,以及用于服務(wù)發(fā)現(xiàn)和配置共享的內(nèi)置機制。Container Linux還提供了一個守護進程etcd,它運行在集群中的所有計算機上,并提供一個動態(tài)配置注冊表,允許在集群成員之間輕松可靠地共享各種配置數(shù)據(jù)。最初CoreOS與Docker緊密合作,但是后來認(rèn)為Docker不滿足于"一個簡單的基礎(chǔ)單元",在2014年底推出開源容器引擎Rocket(簡稱rkt)。
而2017年,rkt派系的CoreOS舍棄掉自己調(diào)度工具Fleet,將重心轉(zhuǎn)移至Kubernetes,并在剛剛發(fā)布了商用Kubernetes平臺Tectonic1.8版本,新增開放云服務(wù),可以進行維護、自動化、修補和升級等,而且可以跨裸機、本地數(shù)據(jù)中心、公有云等多樣環(huán)境運作。

阿里自研富容器技術(shù)Pouch
Pouch是一個開源的孵化項目,源自阿里內(nèi)部自研容器技術(shù),目前數(shù)據(jù)中心運行有數(shù)十萬個Pouch容器,大規(guī)模支撐內(nèi)部離線在線業(yè)務(wù)的混部。Pouch源自阿里T4和Docker的融合,通過阿里內(nèi)部運維和應(yīng)用視角,實現(xiàn)了對阿里內(nèi)部而言容器和物理機使用一致的體驗。
首先,Pouch是一種富容器技術(shù),內(nèi)部應(yīng)用體驗類似虛擬機,擁有init進程,富含多種系統(tǒng)服務(wù);其次,通過內(nèi)核加固與輕量級虛擬機支持,Pouch提供豐富的安全隔離保障和隔離維度;在鏡像分發(fā)上,特別是超大規(guī)模場景下可通過P2P的方式緩解網(wǎng)絡(luò)負(fù)載;在內(nèi)核兼容性方面,更加符合企業(yè)現(xiàn)狀,考慮到大部分企業(yè)IT系統(tǒng)內(nèi)核的升級緩慢、版本較低,最大限度適配現(xiàn)有底層基礎(chǔ)設(shè)施。

另外,Pouch可以與另一開源項目文件分發(fā)系統(tǒng)Dragonfly配合使用。

依然在堅持的Mesos
比Docker的Kubernetes支持舉措早一個月,Mesos今年九月也宣布了對Kubernetes的支持,其平臺用戶可以安裝、擴展和升級多個生產(chǎn)級的Kubernete集群。對此Mesosphere CTO Tobi Knaup稱此舉是為了讓客戶們可以有更多的編排系統(tǒng)選擇。"我們的客戶是運維團隊,有時他們需要支持上萬個開發(fā)者,他們需要多樣化的軟件,不應(yīng)該將他們局限在一個選擇之中。選擇非常重要。"
要知道Mesos的Marathon可是第一個Docker容器的編排系統(tǒng),比Swarm和Kubernetes都要早。在容器發(fā)展的早期,很多人會選擇Mesos來解決容器的編排問題。Apache Mesos的商業(yè)版本是DCOS,這家在第四輪融資1.12億美元的公司擁有來自HPE、微軟等強力支持,Mesosphere毫不隱晦其DCOS的目標(biāo)是在全球擁有2000個客戶。目前,Mesosphere也確實擁有不錯的成績:美國十大金融服務(wù)公司中五家公司、北美十大銀行中五家銀行、全球十大通信運營商中五家、六個最大connected cars的汽車制造廠商都選擇了Mesos。而IT公司如Autodesk、yelp、當(dāng)當(dāng)網(wǎng)、豆瓣網(wǎng)也其忠實用戶。
在2017年的KubeCon主題演講中,Kelsey Hightower講到,運維不要指望僅靠一個共享集群就能滿足所有人,Google的Borg系統(tǒng)并不是這么設(shè)計的。對此,Mesosphere的產(chǎn)品市場經(jīng)理Chris Gaun評價道:"Kubernetes并不是孤島,最少它需要與CI/CD方案結(jié)合在一起,在此基礎(chǔ)上,如果能夠配以現(xiàn)代化的高效數(shù)據(jù)服務(wù)和基于機器學(xué)習(xí)框架的解決方案,則會讓用戶更加滿意。"

Rancher的重大轉(zhuǎn)變
Rancher Labs致力打造操作系統(tǒng)級別的虛擬化工具,其中最為著名的是Linux容器。Rancher Labs公司成立與2014年,它有兩款產(chǎn)品即Cattle 是 Rancher自有的Docker容器管理平臺,RancherOS輕量的開源容器Linux操作系統(tǒng)。
曾經(jīng),Cattle是Rancher內(nèi)置的編排系統(tǒng),并也支持Swarm、Mesos、Kubernetes編排系統(tǒng);但是今年,和CoreOS類似,Racher推出了其2.0版本的容器管理平臺并宣布all-in Kubernetes,2.0版本基于Kubernetes設(shè)計了UI,有對CLI、AP、Docker Compose的支持,還可以導(dǎo)入并配置自有或第三方云廠商的集群。
梁勝在一次媒體采訪中說到:"許多客戶都擁有Kubernetes集群,但是他們并沒有Google般理想的均一化架構(gòu)。他們需要控制訪問的工具,以區(qū)分不同團隊、不同項目和不同應(yīng)用。他們需要一個集中控制臺,以處理不同類型的基礎(chǔ)設(shè)備;Kubernetes在這上面依然不盡人意,Kubernetes提供的都是自有的監(jiān)控配置和網(wǎng)絡(luò)驅(qū)動,這需一個普適的解決方案。"
IaaS廠商也紛紛支持Kubernetes
Google雖然內(nèi)部使用的是Borg系統(tǒng),但是其公有云容器服務(wù)采用Kubernetes作編辦系統(tǒng)。與Kuberentes升溫曲線,比較有趣的巧合是在Gartner的IaaS廠商魔力四象限中,創(chuàng)立于2011年的Google云從2014年時與IBM等其他數(shù)家廠商在Visionaries象限優(yōu)勢微弱,到2016年Google云則獨占Visionaries象限,而在2017年Google云則在Visionaries象限中保持一定優(yōu)勢。


今年,Azure于二月份、IBM于三月份、Oracle于九月份、阿里云于十一月、AWS于十二月宣布正式支持Kubernetes。其實上述廠商也都已經(jīng)是 Docker的合作伙伴,并提供了相關(guān)的企業(yè)級產(chǎn)品服務(wù),如提供Docker Enterprise Edition(Docker EE)支持。除了常見的微服務(wù)、應(yīng)用遷移場景之外,AWS、Azure、阿里云的容器服務(wù)也支持機器學(xué)習(xí)場景。而Google、IBM和Oracle則直接提供了AI平臺化服務(wù)。另一方面,AWS、Azure、阿里云、Google云等廠商在公有云上所提供的容器服務(wù)近乎免費(Google),收費的只是用戶消耗的資源,關(guān)于容器編排管理的市場價值我們會下段有所提及。
Kubernetes與Docker是敵是友?在容器生態(tài)發(fā)展的層面,這或許是個偽命題
創(chuàng)業(yè)公司Docker被估值10億美元,它提供了容器運行時幾乎被默認(rèn)為事實標(biāo)準(zhǔn)。而另一方面,Google的Kubernetes似乎贏得了編排引擎之爭。通常人們認(rèn)為編排系統(tǒng)一層會帶來巨大的市場收益,所以人們都說Kubernetes對Docker造成了直接威脅。而在Cloud Technology Partnership 的首席架構(gòu)師兼Forbes觀察員Mike Kavis看來,真正有市場價值的是整個的PaaS/CaaS平臺,而編排系統(tǒng)只是其中一層而已。真正應(yīng)該與Docker相提并論的應(yīng)該是VMWare、CloudFoundry等,Docker盈利模式應(yīng)該是對應(yīng)的支持服務(wù)。

相信不少人記得去年Kelsey Hightower和Solomon Hykes的Twitter爭執(zhí),其中的建設(shè)性批評應(yīng)該在一定程度上幫助Docker重新審視其產(chǎn)品規(guī)劃?,F(xiàn)在Kubernetes成為了Docker的賦能者;曾經(jīng)任職Google 的Docker現(xiàn)任首席布道師Patrick Chanezon在一次采訪中表示,早些時候Kubernetes的安全性能仍然有待提高,現(xiàn)在情況得到了改善。
Juilia Evans在其tweet上貼出了一張Kubernetes components示意圖。

對于開發(fā)者而言,多家編排系統(tǒng)相互支持是皆大歡喜的事情。開源屆英雄輩出,動態(tài)和趨勢此起彼伏,連曾經(jīng)公開"吵紅臉"的Kubernetes和Docker都已經(jīng)不計前嫌,旁人何須再糾結(jié)于過往。
而Google和Docker等容器玩家更關(guān)注的是如何將成熟的容器化技術(shù)服務(wù)于企業(yè),正如Tim Hockin說道"實際上今天建立分布式系統(tǒng)依然很難,開發(fā)者們依舊很難一起快速地搭建可靠的、可擴展的應(yīng)用程序。"
結(jié)語
容器技術(shù)的價值在于開放的社區(qū)、開放的生態(tài)。如果說容器圈今年的主旋律是什么?應(yīng)該就是標(biāo)準(zhǔn)化。Kubernetes的成功在于其開放的社區(qū)政策,在于實現(xiàn)了開放的容器編排標(biāo)準(zhǔn)。而Docker也終于在12月份提交了容器運行時標(biāo)準(zhǔn) containerd 1.0。
標(biāo)準(zhǔn)化,意味著人們對這件事已經(jīng)達成共識,并愿意在此基礎(chǔ)上進行協(xié)助創(chuàng)新。不需要再去爭吵,不需要再各自造輪子,業(yè)界整體得以更高速有效地積累經(jīng)驗和拓展新領(lǐng)域,從而進入穩(wěn)定的成長期。
Market Share 和 Mind Share是不同的概念。開源社區(qū)中呼聲甚高的 Kubernetes 可以說在 Mind Share 上完勝,它贏得了越來越多開發(fā)者的芳心;"不戰(zhàn)而屈人之兵",它的市場自然也會隨之升溫,這也是為什么幾乎各大云廠商都陸續(xù)決定提供Kubernetes編排服務(wù)。
一個開發(fā)者的項目想獲得商業(yè)的成功,必須要首先在開源社區(qū)中得到認(rèn)同。在開源社區(qū),大家可以得到最真切和最'刺耳'的建議,Show your code please,沒有哪里比這里更相信技術(shù)實力。GitHub曾經(jīng)在一次媒體采訪中說道:"開源社區(qū)已經(jīng)發(fā)展出了自己的社會結(jié)構(gòu),而且這種社會結(jié)構(gòu)還在不停地進化中。如果你沒有全程參與進去,遲早你會被歷史的進程所拋棄。" 今天,恐怕沒有哪個IT廠商會逆行倒施。
在12月初剛剛結(jié)束的KubeCon上,許多主題演講者屢次提到'boring'一詞,并表示讓Kubernetes走向成功需要再次讓這個項目變得枯燥無味。有些抱怨者說,除非對構(gòu)建互聯(lián)網(wǎng)分布式系統(tǒng)略知一二,否則Kubernetes是個難以理解和使用的項目,這是一個很復(fù)雜的系統(tǒng)。難道Kubernetes就不能不這么'boring'嗎?"這恰恰是一直以來的目標(biāo),在需要的地方創(chuàng)立Kubernetes,然后由此發(fā)展相關(guān)生態(tài)體系,而這個核心部分需要保持無聊。"Kubernetes布道師Kelsey Hightower說道。同時,紅帽公司的Clayton Coleman也表示,開發(fā)應(yīng)用才是令人興奮的環(huán)節(jié),但是運行應(yīng)用這個環(huán)節(jié)需要無聊。
It is getting boring and getting good. 八卦和談資越來越少的時候,正是人們在安心做事的時候。業(yè)界都關(guān)心怎樣能通過容器技術(shù)帶來應(yīng)用層創(chuàng)新,帶來更多的價值。未來,讓我們拭目以待。