
容器管理和編排將成云計算主戰場(chǎng)
從云化的誘因說(shuō)起。中國云計算實(shí)踐八年多,市場(chǎng)認知逐漸提升,銳意創(chuàng )新企業(yè)對云的期待已經(jīng)不是資源彈性、成本優(yōu)勢那么簡(jiǎn)單,業(yè)務(wù)的靈活性和穩定性才是直接目標,當然這背后的應用彈性是研發(fā)部門(mén)要考慮的,所以 DevOps 的理念正在刺激技術(shù)團隊的神經(jīng),敏捷、靈活、高效的容器技術(shù)和微服務(wù)架構越來(lái)越被關(guān)注。
Docker 的理念為“Build, Ship and Run Any App, Anywhere”,通過(guò)容器和鏡像的特性讓 DevOps 變得容易,但 Docker 的前景,更在于支持分布式、服務(wù)化設計,實(shí)現一系列可獨立開(kāi)發(fā)、獨立部署和獨立擴展的服務(wù)組合,以保證業(yè)務(wù)的靈活性和穩定性。當前AWS、微軟、阿里云、IBM、Redhat、VMWare、華為、Intel 等各大公有云和私有云提供商都不約而同地大力投資 Docker,實(shí)際上就是認可了這樣的趨勢。當然,各家技術(shù)的選擇和產(chǎn)品化的程度是另一回事了。
符合企業(yè)需要的容器云技術(shù)架構,需要符合DevOps、微服務(wù)的方向,能支持分布式應用,故而合適的容器的管理和編排(Orchestration)工具尤為重要。初級的編排,是資源的編排,即針對物理機或者虛擬機;但更高層次的是服務(wù)的編排,需要對架構層次在整體上有一個(gè)完整的定義。新浪微博平臺運維架構師王關(guān)勝就曾經(jīng)分享說(shuō),容器編排的核心內容包括服務(wù)定義、資源管理、容器調度、服務(wù)檢測和服務(wù)發(fā)現等五個(gè)方面。
所以說(shuō),容器的管理和編排正在成為容器云的主戰場(chǎng)。Docker 公司推 Swarm 技術(shù),收購專(zhuān)注于編排的 Conductant 公司,正是為此。
Docker Swarm vs Kubernetes
當前主流的容器集群管理技術(shù),包括了 Docker 官方的 Docker Swarm、Twitter 背書(shū)的 Mesos 和 Google 背書(shū)的 Kubernetes。由于A(yíng)pache Mesos 只是一個(gè)分布式內核,目前的發(fā)展方向是數據中心操作系統(DCOS),它同時(shí)支持 Marathon、Kubernetes 和 Swarm 等多種框架,連 Mesosphere 也是 Kubernetes 生態(tài)的一員,從編排的角度,討論 Mesos 意義不大,故而只對比 Docker Swarm 和 Kubernetes。
1. Docker Swarm
Docker Swarm 是 Docker 官方推出的容器管理工具,支持容器的跨宿主節點(diǎn)的集群管理,這讓傳統的云計算資源管理方式有了新的發(fā)展。Docker Swarm 的推出,也是 Docker 從善如流的結果。因為 Docker 曾在很長(cháng)一段時(shí)間內只能運行在單個(gè)宿主機上,這讓外界和社區感到不滿(mǎn)意。于是 Docker 在2014年12月推出了第一個(gè)版本的 Swarm,同時(shí)發(fā)布的 Docker 工具還有 Machine 和 Compose - 后者是 Docker 收購來(lái)輔助完善容器編排的產(chǎn)品。
年輕的“三劍客”并不能立即讓 Docker 集群對分布式應用的支持達到爐火純青的境界,外部出自 Google 的 Kubernetes 項目橫空出世,提供另一種方案,而內部的 Swarm 目前也正在不斷完善之中。Swarm 的最新進(jìn)化,是在今年 6 月 DockerCon 大會(huì )上發(fā)布的 Docker 1.12 內置了 Docker 公司聲稱(chēng)的“最佳的容器編排工具”——Swarm 模式(Swarm mode),引入了服務(wù)的概念,不再以容器作為主要管理對象單元,不再需要額外的KV存儲支持服務(wù)模型,讓擴容縮容、服務(wù)發(fā)現、滾動(dòng)更新、負載均衡和路由等功能都更容易實(shí)現。

作為 Docker 的編排模式,Swarm mode 是通過(guò)獨立開(kāi)發(fā)的 SwarmKit 項目來(lái)實(shí)現的。SwarmKit 的主要功能包括節點(diǎn)發(fā)現、基于raft算法的一致性和任務(wù)調度等。SwarmKit 通過(guò) Containerd 類(lèi)似的方式接入Docker Engine,最終通過(guò)新的 Docker API 對外提供容器集群服務(wù)。根據 Docker 公司的態(tài)度,Swarm mode 將會(huì )取代之前的 Docker Swarm。新的 Swarm 吸收了 Kubernetes 的一些優(yōu)點(diǎn),但作為內置的可選工具讓開(kāi)發(fā)者更易于使用——不用另外部署第三方的 Kubernetes 了。

2. Kubernetes
Kubernetes 是一個(gè)以 Google Borg 為原型的開(kāi)源項目。Borg 是 Google 內部使用的集群管理工具,迄今已在 Google 生產(chǎn)環(huán)境中運行15年,說(shuō)久經(jīng)考驗并不過(guò)分。Google 新書(shū)《Site Reliability Engineering - How Google Runs Production Systems》里面強調,其全球百萬(wàn)臺服務(wù)器正是通過(guò) Borg 來(lái)實(shí)現高效管理的,可謂能力卓絕。本來(lái) Borg 是 Google 的秘密武器,但 Google 為了贏(yíng)得容器云之戰,基于 Borg 的經(jīng)驗,結合了來(lái)自社區的頂級創(chuàng )意和實(shí)踐,構建了支持 Docker 容器的 Kubernetes,并將后者開(kāi)源。
Kubernetes 功能完善,資源調度、服務(wù)發(fā)現、運行監控、擴容縮容、負載均衡、灰度升級、失敗冗余、容災恢復、DevOps等樣樣精通,可實(shí)現大規模、分布式、高可用的 Docker 集群,Kubernetes面向 PaaS,它直接為解決業(yè)務(wù)的分布式架構、服務(wù)化設計,完整定義了構建業(yè)務(wù)系統的標準化架構層,即Cluster、Node、Pod、Label等一系列的抽象都是定義好的,為服務(wù)編排提供了一個(gè)簡(jiǎn)單、輕量級的方式。

Kubernetes 目前也已經(jīng)被大量的云計算技術(shù)提供商和用戶(hù)采用,如 eBay、Yahoo、微軟、IBM、英特爾、華為、VMware、HPE、Mirantis、網(wǎng)易、普元、亞信等,當然還包括國內的多家容器云初創(chuàng )公司。
Kubernetes 社區的支持者,則包括(但不限于) Google、Redhat、CoreOS、華為、浙大SEL(浙江大學(xué)軟件工程實(shí)驗室)、網(wǎng)易等。Google 卯足了勁兒推廣 Kubernetes,在去年不僅加入 OpenStack 基金會(huì ),還聯(lián)合其他20家公司成立開(kāi)源組織 Cloud Native Computing Foundation(CNCF),就是要保證 Kubernetes 未來(lái)在任何基礎設施(公有云、私有云、裸機)上都能良好運行,并將推動(dòng)開(kāi)源以及合作伙伴社區共同開(kāi)發(fā)容器工具集。

3. 主要特點(diǎn)對比
結合上文,將 Swarm 和 Kubernetes 最新的主要特點(diǎn)對比如下,可見(jiàn) Kubernetes 增加了很多應用級別的功能,適用于快速應用的部署和維護。
結論
基于 Borg 成熟的經(jīng)驗打造的 Kubernetes,為容器編排管理提供了完整的開(kāi)源方案,并且社區活躍,生態(tài)完善,積累了大量分布式、服務(wù)化系統架構的最佳實(shí)踐。SwarmKit 當然還會(huì )迭代會(huì )更加優(yōu)秀的版本,但一來(lái)模式有根本的不同,二來(lái)完善還需要時(shí)間。同時(shí),Docker 公司對未來(lái)容器編排管理的技術(shù)路線(xiàn)也有挑戰,把編排的精華加入 Docker,自然有利于開(kāi)發(fā)者獲得集群的能力,卻也顛覆了系統級程序專(zhuān)注、松耦合的理念,新架構在生產(chǎn)環(huán)境中的穩定可靠,可能還需要更多的說(shuō)服力。此外,Docker 推出不完全開(kāi)源的 Docker Datacenter 商業(yè)套件,也有可能讓社區和生態(tài)玩家對 Docker Engine 的商業(yè)傾向有所擔憂(yōu)。
所以,從設計模式、工具鏈、最佳實(shí)踐和商業(yè)模式來(lái)看,Kubernetes 都是目前更加讓人放心的容器編排管理技術(shù)。