容器管理和編排將成云計算主戰(zhàn)場
從云化的誘因說起。中國云計算實踐八年多,市場認知逐漸提升,銳意創(chuàng)新企業(yè)對云的期待已經(jīng)不是資源彈性、成本優(yōu)勢那么簡單,業(yè)務的靈活性和穩(wěn)定性才是直接目標,當然這背后的應用彈性是研發(fā)部門要考慮的,所以 DevOps 的理念正在刺激技術團隊的神經(jīng),敏捷、靈活、高效的容器技術和微服務架構越來越被關注。
Docker 的理念為“Build, Ship and Run Any App, Anywhere”,通過容器和鏡像的特性讓 DevOps 變得容易,但 Docker 的前景,更在于支持分布式、服務化設計,實現(xiàn)一系列可獨立開發(fā)、獨立部署和獨立擴展的服務組合,以保證業(yè)務的靈活性和穩(wěn)定性。當前AWS、微軟、阿里云、IBM、Redhat、VMWare、華為、Intel 等各大公有云和私有云提供商都不約而同地大力投資 Docker,實際上就是認可了這樣的趨勢。當然,各家技術的選擇和產(chǎn)品化的程度是另一回事了。
符合企業(yè)需要的容器云技術架構,需要符合DevOps、微服務的方向,能支持分布式應用,故而合適的容器的管理和編排(Orchestration)工具尤為重要。初級的編排,是資源的編排,即針對物理機或者虛擬機;但更高層次的是服務的編排,需要對架構層次在整體上有一個完整的定義。新浪微博平臺運維架構師王關勝就曾經(jīng)分享說,容器編排的核心內容包括服務定義、資源管理、容器調度、服務檢測和服務發(fā)現(xiàn)等五個方面。
所以說,容器的管理和編排正在成為容器云的主戰(zhàn)場。Docker 公司推 Swarm 技術,收購專注于編排的 Conductant 公司,正是為此。
Docker Swarm vs Kubernetes
當前主流的容器集群管理技術,包括了 Docker 官方的 Docker Swarm、Twitter 背書的 Mesos 和 Google 背書的 Kubernetes。由于Apache Mesos 只是一個分布式內核,目前的發(fā)展方向是數(shù)據(jù)中心操作系統(tǒng)(DCOS),它同時支持 Marathon、Kubernetes 和 Swarm 等多種框架,連 Mesosphere 也是 Kubernetes 生態(tài)的一員,從編排的角度,討論 Mesos 意義不大,故而只對比 Docker Swarm 和 Kubernetes。
1. Docker Swarm
Docker Swarm 是 Docker 官方推出的容器管理工具,支持容器的跨宿主節(jié)點的集群管理,這讓傳統(tǒng)的云計算資源管理方式有了新的發(fā)展。Docker Swarm 的推出,也是 Docker 從善如流的結果。因為 Docker 曾在很長一段時間內只能運行在單個宿主機上,這讓外界和社區(qū)感到不滿意。于是 Docker 在2014年12月推出了第一個版本的 Swarm,同時發(fā)布的 Docker 工具還有 Machine 和 Compose - 后者是 Docker 收購來輔助完善容器編排的產(chǎn)品。
年輕的“三劍客”并不能立即讓 Docker 集群對分布式應用的支持達到爐火純青的境界,外部出自 Google 的 Kubernetes 項目橫空出世,提供另一種方案,而內部的 Swarm 目前也正在不斷完善之中。Swarm 的最新進化,是在今年 6 月 DockerCon 大會上發(fā)布的 Docker 1.12 內置了 Docker 公司聲稱的“最佳的容器編排工具”——Swarm 模式(Swarm mode),引入了服務的概念,不再以容器作為主要管理對象單元,不再需要額外的KV存儲支持服務模型,讓擴容縮容、服務發(fā)現(xiàn)、滾動更新、負載均衡和路由等功能都更容易實現(xiàn)。
作為 Docker 的編排模式,Swarm mode 是通過獨立開發(fā)的 SwarmKit 項目來實現(xiàn)的。SwarmKit 的主要功能包括節(jié)點發(fā)現(xiàn)、基于raft算法的一致性和任務調度等。SwarmKit 通過 Containerd 類似的方式接入Docker Engine,最終通過新的 Docker API 對外提供容器集群服務。根據(jù) Docker 公司的態(tài)度,Swarm mode 將會取代之前的 Docker Swarm。新的 Swarm 吸收了 Kubernetes 的一些優(yōu)點,但作為內置的可選工具讓開發(fā)者更易于使用——不用另外部署第三方的 Kubernetes 了。
2. Kubernetes
Kubernetes 是一個以 Google Borg 為原型的開源項目。Borg 是 Google 內部使用的集群管理工具,迄今已在 Google 生產(chǎn)環(huán)境中運行15年,說久經(jīng)考驗并不過分。Google 新書《Site Reliability Engineering - How Google Runs Production Systems》里面強調,其全球百萬臺服務器正是通過 Borg 來實現(xiàn)高效管理的,可謂能力卓絕。本來 Borg 是 Google 的秘密武器,但 Google 為了贏得容器云之戰(zhàn),基于 Borg 的經(jīng)驗,結合了來自社區(qū)的頂級創(chuàng)意和實踐,構建了支持 Docker 容器的 Kubernetes,并將后者開源。
Kubernetes 功能完善,資源調度、服務發(fā)現(xiàn)、運行監(jiān)控、擴容縮容、負載均衡、灰度升級、失敗冗余、容災恢復、DevOps等樣樣精通,可實現(xiàn)大規(guī)模、分布式、高可用的 Docker 集群,Kubernetes面向 PaaS,它直接為解決業(yè)務的分布式架構、服務化設計,完整定義了構建業(yè)務系統(tǒng)的標準化架構層,即Cluster、Node、Pod、Label等一系列的抽象都是定義好的,為服務編排提供了一個簡單、輕量級的方式。
Kubernetes 目前也已經(jīng)被大量的云計算技術提供商和用戶采用,如 eBay、Yahoo、微軟、IBM、英特爾、華為、VMware、HPE、Mirantis、網(wǎng)易、普元、亞信等,當然還包括國內的多家容器云初創(chuàng)公司。
Kubernetes 社區(qū)的支持者,則包括(但不限于) Google、Redhat、CoreOS、華為、浙大SEL(浙江大學軟件工程實驗室)、網(wǎng)易等。Google 卯足了勁兒推廣 Kubernetes,在去年不僅加入 OpenStack 基金會,還聯(lián)合其他20家公司成立開源組織 Cloud Native Computing Foundation(CNCF),就是要保證 Kubernetes 未來在任何基礎設施(公有云、私有云、裸機)上都能良好運行,并將推動開源以及合作伙伴社區(qū)共同開發(fā)容器工具集。
3. 主要特點對比
結合上文,將 Swarm 和 Kubernetes 最新的主要特點對比如下,可見 Kubernetes 增加了很多應用級別的功能,適用于快速應用的部署和維護。
結論
基于 Borg 成熟的經(jīng)驗打造的 Kubernetes,為容器編排管理提供了完整的開源方案,并且社區(qū)活躍,生態(tài)完善,積累了大量分布式、服務化系統(tǒng)架構的最佳實踐。SwarmKit 當然還會迭代會更加優(yōu)秀的版本,但一來模式有根本的不同,二來完善還需要時間。同時,Docker 公司對未來容器編排管理的技術路線也有挑戰(zhàn),把編排的精華加入 Docker,自然有利于開發(fā)者獲得集群的能力,卻也顛覆了系統(tǒng)級程序專注、松耦合的理念,新架構在生產(chǎn)環(huán)境中的穩(wěn)定可靠,可能還需要更多的說服力。此外,Docker 推出不完全開源的 Docker Datacenter 商業(yè)套件,也有可能讓社區(qū)和生態(tài)玩家對 Docker Engine 的商業(yè)傾向有所擔憂。
所以,從設計模式、工具鏈、最佳實踐和商業(yè)模式來看,Kubernetes 都是目前更加讓人放心的容器編排管理技術。