SwarmKit功能介紹及主要特征
大?。?/span>0.5 MB 人氣: 2017-10-09 需要積分:1
推薦 + 挑錯(cuò) + 收藏(0) + 用戶評(píng)論(0)
標(biāo)簽:
Docker在6月7日發(fā)布了SwarmKit,隨后在上周的DockerCon大會(huì)中發(fā)布Docker1.12版本,宣布SwarmKit引入編排功能,終于為用戶解決容器的集群管理、分布式應(yīng)用在容器集群上的編排管理的兩大難點(diǎn)。在SwarmKit的幫助下,我們得以將容器從只能部署在單一機(jī)器之上,升級(jí)為能夠?qū)⒍喾N復(fù)雜的容器應(yīng)用廣泛部署于大量設(shè)備當(dāng)中。通過(guò)SwarmKit項(xiàng)目,使原生Docker Native即支持集群與分布式應(yīng)用系統(tǒng)編排。
接下來(lái)我會(huì)從SwarmKit的整體架構(gòu)、試用體驗(yàn)以及與其他容器管理軟件整體上的比較,這三個(gè)方面進(jìn)行分享。
SwarmKit功能介紹
SwarmKit項(xiàng)目是Docker公司的一個(gè)開源項(xiàng)目,主要用來(lái)提供容器集群以及編排能力。其主要功能包括節(jié)點(diǎn)發(fā)現(xiàn)、基于raft算法的一致性和任務(wù)調(diào)度等。
如下圖所示,SwarmKit通過(guò)Containerd類似的方式接入Docker Engine,最終通過(guò)新的Docker API對(duì)外提供容器集群服務(wù)。

整體架構(gòu)
目前來(lái)說(shuō)SwarmKit還沒(méi)有對(duì)外發(fā)布對(duì)于集群操作的API。但是,通過(guò)CLI的方式來(lái)進(jìn)行集群的相關(guān)管理操作也是非常的簡(jiǎn)單。比如,通過(guò)在服務(wù)器上運(yùn)行SwarmKit工具的swarmd命令后,即可將其加入到服務(wù)器集群中,是該服務(wù)器成為集群中的一個(gè)節(jié)點(diǎn)。SwarmKit的節(jié)點(diǎn)分為兩類:
工作節(jié)點(diǎn)(Worker):負(fù)責(zé)通過(guò)執(zhí)行器運(yùn)行任務(wù)。SwarmKit的默認(rèn)執(zhí)行器為Docker容器執(zhí)行器(Docker Container Executor)。
?。?)內(nèi)建分布式存儲(chǔ),不要額外的數(shù)據(jù)庫(kù)
?。?)支持Rolling update
?。?)容器高可用,支持Zero applicaton downtime
?。?)通過(guò)TLS保證了節(jié)點(diǎn)之間通訊的安全
管理節(jié)點(diǎn)(Manager):負(fù)責(zé)接收和響應(yīng)用戶請(qǐng)求,將集群狀態(tài)調(diào)節(jié)到最終狀態(tài)。在SwarmKit中,用戶可以動(dòng)態(tài)調(diào)整節(jié)點(diǎn)的角色,即在Manager和Worker之間轉(zhuǎn)換。
主要特征
?。?)服務(wù)狀態(tài)一致性: SwarmKit會(huì)不斷對(duì)比Worker節(jié)點(diǎn)的2個(gè)狀態(tài):期望狀態(tài)和實(shí)際狀態(tài)。當(dāng)一個(gè)節(jié)點(diǎn)的這兩種狀態(tài)不一致時(shí),SwarmKit會(huì)自動(dòng)將服務(wù)中的任務(wù)調(diào)度到其他節(jié)點(diǎn),以保證服務(wù)的正常運(yùn)行。
(2)服務(wù)類型:目前SwarmKit支持兩種服務(wù)類型:
復(fù)制服務(wù):SwarmKit通過(guò)命令行參數(shù)可以在Worker節(jié)點(diǎn)上啟動(dòng)期望數(shù)量的服務(wù)實(shí)例,并通過(guò)調(diào)度策略合理地運(yùn)行在不同的節(jié)點(diǎn)上。
全局服務(wù):SwarmKit會(huì)在集群中所有可用節(jié)點(diǎn)上啟動(dòng)一個(gè)任務(wù)。
(3)配置更新:用戶可以在任何時(shí)間對(duì)服務(wù)的一個(gè)或者多個(gè)配置進(jìn)行更新,甚至更新整個(gè)服務(wù)的版本。在對(duì)某個(gè)服務(wù)執(zhí)行完配置更新的命令后,SwarmKit會(huì)協(xié)調(diào)升級(jí)服務(wù)中的所有任務(wù)。默認(rèn)策略是多個(gè)任務(wù)同時(shí)升級(jí)?,F(xiàn)有的更新策略有:并發(fā)更新和延遲更新。
并發(fā)更新:定義同時(shí)更新的任務(wù)數(shù)量,根據(jù)不同任務(wù)更新的實(shí)際結(jié)果來(lái)修正更新任務(wù)的最終狀態(tài),達(dá)到狀態(tài)的一致。
延遲更新:設(shè)置一組更新完成之后的最小等待時(shí)間。當(dāng)配置升級(jí)時(shí),SwarmKit會(huì)重啟并等待任務(wù)變?yōu)檫\(yùn)行狀態(tài),并在延遲結(jié)束后繼續(xù)執(zhí)行后續(xù)的更新;
?。?)重啟策略:用戶可以定制重啟的條件、延遲和最大嘗試次數(shù)。SwarmKit會(huì)檢測(cè)任務(wù)狀態(tài),并按照用戶定義的條件進(jìn)行重啟,同時(shí)SwarmKit會(huì)決定是否在不同節(jié)點(diǎn)啟動(dòng)任務(wù),避免失效節(jié)點(diǎn)對(duì)服務(wù)產(chǎn)生影響。
?。?)內(nèi)置路由機(jī)制:負(fù)載均衡對(duì)大規(guī)模集群來(lái)說(shuō)是非常重要的,SwarmKit的結(jié)合使得Docker Engine自身支持路由功能,而與原生ovelay網(wǎng)絡(luò)的結(jié)合,效果更加顯著。容器原生的負(fù)載均衡,無(wú)需額外的集群設(shè)置,就可以兼容用戶現(xiàn)有的負(fù)載均衡服務(wù)。通過(guò)IPVS與內(nèi)核聯(lián)合,實(shí)現(xiàn)可靠的負(fù)載均衡。
集群管理
SwarmKit的集群管理主要有以下特點(diǎn):
?。?)狀態(tài)存儲(chǔ):SwarmKit基于Raft算法在內(nèi)存中維護(hù)集群的狀態(tài)一致性,并能夠在集群狀態(tài)發(fā)生異常時(shí)迅速作出調(diào)度調(diào)整;
(2)拓?fù)涔芾恚篠warmKit支持通過(guò)API或者命令行方式來(lái)動(dòng)態(tài)修改節(jié)點(diǎn)角色(Worker/Manager);
?。?)節(jié)點(diǎn)管理:操作者可以修改可用節(jié)點(diǎn)的狀態(tài)。例如可以設(shè)置節(jié)點(diǎn)狀態(tài)為Paused,以避免在該節(jié)點(diǎn)上創(chuàng)建新的任務(wù);或者設(shè)置為Drained狀態(tài),除了禁止創(chuàng)建新任務(wù)外,當(dāng)前節(jié)點(diǎn)上的其他任務(wù)也會(huì)被調(diào)度到其他節(jié)點(diǎn)上。
任務(wù)調(diào)度
SwarmKit在任務(wù)調(diào)度上主要有以下特點(diǎn):
?。?)資源感知:SwarmKit能夠感知可用節(jié)點(diǎn)上的資源利用情況,并以此分配和執(zhí)行任務(wù)。
(2)資源約束:用戶可以通過(guò)約束表達(dá)式,將任務(wù)調(diào)度到符合表達(dá)式的節(jié)點(diǎn)上。對(duì)節(jié)點(diǎn)的約束條件包括節(jié)點(diǎn)ID、名稱和標(biāo)簽等。
?。?)調(diào)度策略:目前SwarmKit默認(rèn)采用Spread調(diào)度策略;在滿足約束條件和資源需求的前提下,盡可能地將任務(wù)調(diào)度到負(fù)載最低的節(jié)點(diǎn)。
非常好我支持^.^
(0) 0%
不好我反對(duì)
(0) 0%
