編排管理成容器云關(guān)鍵,Kubernetes和Swarm該選誰

摘要:容器的管理和編排將是容器云的關(guān)鍵,而Kubernetes是最為成熟的編排技術(shù)

不論是公有云還是私有云環(huán)境,Docker 在新一代技術(shù)架構(gòu)中的重要地位已經(jīng)毋庸多言,甚至已經(jīng)有企業(yè)在探索完全 Docker 化。在此背景下,如何選擇容器技術(shù)棧就成為了企業(yè)實(shí)踐的關(guān)鍵?;卮疬@個問題,首先需要厘清技術(shù)體系更新的邏輯,再看可選技術(shù)是否符合需求。本文認(rèn)為,容器的管理和編排將是容器云的關(guān)鍵,而 Kubernetes 是最為成熟的編排技術(shù)。

 

容器管理和編排將成云計算主戰(zhàn)場

從云化的誘因說起。中國云計算實(shí)踐八年多,市場認(rèn)知逐漸提升,銳意創(chuàng)新企業(yè)對云的期待已經(jīng)不是資源彈性、成本優(yōu)勢那么簡單,業(yè)務(wù)的靈活性和穩(wěn)定性才是直接目標(biāo),當(dāng)然這背后的應(yīng)用彈性是研發(fā)部門要考慮的,所以 DevOps 的理念正在刺激技術(shù)團(tuán)隊的神經(jīng),敏捷、靈活、高效的容器技術(shù)和微服務(wù)架構(gòu)越來越被關(guān)注。

Docker 的理念為“Build, Ship and Run Any App, Anywhere”,通過容器和鏡像的特性讓 DevOps 變得容易,但 Docker 的前景,更在于支持分布式、服務(wù)化設(shè)計,實(shí)現(xiàn)一系列可獨(dú)立開發(fā)、獨(dú)立部署和獨(dú)立擴(kuò)展的服務(wù)組合,以保證業(yè)務(wù)的靈活性和穩(wěn)定性。當(dāng)前AWS、微軟、阿里云、IBM、Redhat、VMWare、華為、Intel 等各大公有云和私有云提供商都不約而同地大力投資 Docker,實(shí)際上就是認(rèn)可了這樣的趨勢。當(dāng)然,各家技術(shù)的選擇和產(chǎn)品化的程度是另一回事了。

符合企業(yè)需要的容器云技術(shù)架構(gòu),需要符合DevOps、微服務(wù)的方向,能支持分布式應(yīng)用,故而合適的容器的管理和編排(Orchestration)工具尤為重要。初級的編排,是資源的編排,即針對物理機(jī)或者虛擬機(jī);但更高層次的是服務(wù)的編排,需要對架構(gòu)層次在整體上有一個完整的定義。新浪微博平臺運(yùn)維架構(gòu)師王關(guān)勝就曾經(jīng)分享說,容器編排的核心內(nèi)容包括服務(wù)定義、資源管理、容器調(diào)度、服務(wù)檢測和服務(wù)發(fā)現(xiàn)等五個方面。

所以說,容器的管理和編排正在成為容器云的主戰(zhàn)場。Docker 公司推 Swarm 技術(shù),收購專注于編排的 Conductant 公司,正是為此。

Docker Swarm vs Kubernetes

當(dāng)前主流的容器集群管理技術(shù),包括了 Docker 官方的 Docker Swarm、Twitter 背書的 Mesos 和 Google 背書的 Kubernetes。由于Apache Mesos 只是一個分布式內(nèi)核,目前的發(fā)展方向是數(shù)據(jù)中心操作系統(tǒng)(DCOS),它同時支持 Marathon、Kubernetes 和 Swarm 等多種框架,連 Mesosphere 也是 Kubernetes 生態(tài)的一員,從編排的角度,討論 Mesos 意義不大,故而只對比 Docker Swarm 和 Kubernetes。

1. Docker Swarm

Docker Swarm 是 Docker 官方推出的容器管理工具,支持容器的跨宿主節(jié)點(diǎn)的集群管理,這讓傳統(tǒng)的云計算資源管理方式有了新的發(fā)展。Docker Swarm 的推出,也是 Docker 從善如流的結(jié)果。因為 Docker 曾在很長一段時間內(nèi)只能運(yùn)行在單個宿主機(jī)上,這讓外界和社區(qū)感到不滿意。于是 Docker 在2014年12月推出了第一個版本的 Swarm,同時發(fā)布的 Docker 工具還有 Machine 和 Compose - 后者是 Docker 收購來輔助完善容器編排的產(chǎn)品。

年輕的“三劍客”并不能立即讓 Docker 集群對分布式應(yīng)用的支持達(dá)到爐火純青的境界,外部出自 Google 的 Kubernetes 項目橫空出世,提供另一種方案,而內(nèi)部的 Swarm 目前也正在不斷完善之中。Swarm 的最新進(jìn)化,是在今年 6 月 DockerCon 大會上發(fā)布的 Docker 1.12 內(nèi)置了 Docker 公司聲稱的“最佳的容器編排工具”——Swarm 模式(Swarm mode),引入了服務(wù)的概念,不再以容器作為主要管理對象單元,不再需要額外的KV存儲支持服務(wù)模型,讓擴(kuò)容縮容、服務(wù)發(fā)現(xiàn)、滾動更新、負(fù)載均衡和路由等功能都更容易實(shí)現(xiàn)。

 

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

 

2. Kubernetes

Kubernetes 是一個以 Google Borg 為原型的開源項目。Borg 是 Google 內(nèi)部使用的集群管理工具,迄今已在 Google 生產(chǎn)環(huán)境中運(yùn)行15年,說久經(jīng)考驗并不過分。Google 新書《Site Reliability Engineering - How Google Runs Production Systems》里面強(qiáng)調(diào),其全球百萬臺服務(wù)器正是通過 Borg 來實(shí)現(xiàn)高效管理的,可謂能力卓絕。本來 Borg 是 Google 的秘密武器,但 Google 為了贏得容器云之戰(zhàn),基于 Borg 的經(jīng)驗,結(jié)合了來自社區(qū)的頂級創(chuàng)意和實(shí)踐,構(gòu)建了支持 Docker 容器的 Kubernetes,并將后者開源。

Kubernetes 功能完善,資源調(diào)度、服務(wù)發(fā)現(xiàn)、運(yùn)行監(jiān)控、擴(kuò)容縮容、負(fù)載均衡、灰度升級、失敗冗余、容災(zāi)恢復(fù)、DevOps等樣樣精通,可實(shí)現(xiàn)大規(guī)模、分布式、高可用的 Docker 集群,Kubernetes面向 PaaS,它直接為解決業(yè)務(wù)的分布式架構(gòu)、服務(wù)化設(shè)計,完整定義了構(gòu)建業(yè)務(wù)系統(tǒng)的標(biāo)準(zhǔn)化架構(gòu)層,即Cluster、Node、Pod、Label等一系列的抽象都是定義好的,為服務(wù)編排提供了一個簡單、輕量級的方式。

 

Kubernetes 目前也已經(jīng)被大量的云計算技術(shù)提供商和用戶采用,如 eBay、Yahoo、微軟、IBM、英特爾、華為、VMware、HPE、Mirantis、網(wǎng)易、普元、亞信等,當(dāng)然還包括國內(nèi)的多家容器云初創(chuàng)公司。

Kubernetes 社區(qū)的支持者,則包括(但不限于) Google、Redhat、CoreOS、華為、浙大SEL(浙江大學(xué)軟件工程實(shí)驗室)、網(wǎng)易等。Google 卯足了勁兒推廣 Kubernetes,在去年不僅加入 OpenStack 基金會,還聯(lián)合其他20家公司成立開源組織 Cloud Native Computing Foundation(CNCF),就是要保證 Kubernetes 未來在任何基礎(chǔ)設(shè)施(公有云、私有云、裸機(jī))上都能良好運(yùn)行,并將推動開源以及合作伙伴社區(qū)共同開發(fā)容器工具集。

 

3. 主要特點(diǎn)對比

結(jié)合上文,將 Swarm 和 Kubernetes 最新的主要特點(diǎn)對比如下,可見 Kubernetes 增加了很多應(yīng)用級別的功能,適用于快速應(yīng)用的部署和維護(hù)。

 

 

結(jié)論

基于 Borg 成熟的經(jīng)驗打造的 Kubernetes,為容器編排管理提供了完整的開源方案,并且社區(qū)活躍,生態(tài)完善,積累了大量分布式、服務(wù)化系統(tǒng)架構(gòu)的最佳實(shí)踐。SwarmKit 當(dāng)然還會迭代會更加優(yōu)秀的版本,但一來模式有根本的不同,二來完善還需要時間。同時,Docker 公司對未來容器編排管理的技術(shù)路線也有挑戰(zhàn),把編排的精華加入 Docker,自然有利于開發(fā)者獲得集群的能力,卻也顛覆了系統(tǒng)級程序?qū)Wⅰ⑺神詈系睦砟?,新架?gòu)在生產(chǎn)環(huán)境中的穩(wěn)定可靠,可能還需要更多的說服力。此外,Docker 推出不完全開源的 Docker Datacenter 商業(yè)套件,也有可能讓社區(qū)和生態(tài)玩家對 Docker Engine 的商業(yè)傾向有所擔(dān)憂。

所以,從設(shè)計模式、工具鏈、最佳實(shí)踐和商業(yè)模式來看,Kubernetes 都是目前更加讓人放心的容器編排管理技術(shù)。

極客網(wǎng)企業(yè)會員

免責(zé)聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請進(jìn)一步核實(shí),并對任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對有關(guān)資料所引致的錯誤、不確或遺漏,概不負(fù)任何法律責(zé)任。任何單位或個人認(rèn)為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識產(chǎn)權(quán)或存在不實(shí)內(nèi)容時,應(yīng)及時向本網(wǎng)站提出書面權(quán)利通知或不實(shí)情況說明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實(shí)情況證明。本網(wǎng)站在收到上述法律文件后,將會依法盡快聯(lián)系相關(guān)文章源頭核實(shí),溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。

2016-11-15
編排管理成容器云關(guān)鍵,Kubernetes和Swarm該選誰
不論是公有云還是私有云環(huán)境,Docker 在新一代技術(shù)架構(gòu)中的重要地位已經(jīng)毋庸多言,甚至已經(jīng)有企業(yè)在探索完全 Docker 化。在此背景下,如何選擇容器技術(shù)棧就成為了企業(yè)實(shí)踐的關(guān)鍵?;卮疬@個問題,首先需要厘清技術(shù)體系更新的邏輯,再看可選技術(shù)是否符合需求。

長按掃碼 閱讀全文