?
このドキュメントでは、 php中國(guó)語ネットマニュアル リリース
本主題介紹Docker Engine 1.12的集群管理和編排功能特有的一些概念。
嵌入在Docker Engine中的集群管理和編排功能是使用SwarmKit構(gòu)建的。參與群集的Docker引擎以群集模式運(yùn)行。您可以通過初始化群集或加入現(xiàn)有群集來為引擎啟用群集模式。
一個(gè)群是Docker引擎或集群節(jié)點(diǎn),在這里部署服務(wù)。Docker Engine CLI和API包括管理群集節(jié)點(diǎn)(例如,添加或移除節(jié)點(diǎn))以及在群集中部署和編排服務(wù)的命令。
當(dāng)您不使用群集模式運(yùn)行Docker時(shí),您將執(zhí)行容器命令。當(dāng)您在群集模式下運(yùn)行Docker時(shí),可以編排服務(wù)。您可以在同一個(gè)Docker實(shí)例上運(yùn)行swarm服務(wù)和獨(dú)立容器。
節(jié)點(diǎn)是Docker引擎參與群的一個(gè)實(shí)例。您也可以將其視為Docker節(jié)點(diǎn)。您可以在單臺(tái)物理計(jì)算機(jī)或云服務(wù)器上運(yùn)行一個(gè)或多個(gè)節(jié)點(diǎn),但生產(chǎn)群部署通常包括分布在多臺(tái)物理機(jī)和云計(jì)算機(jī)上的Docker節(jié)點(diǎn)。
要將您的應(yīng)用程序部署到群集,您需要向管理器節(jié)點(diǎn)提交服務(wù)定義。管理器節(jié)點(diǎn)將稱為任務(wù)的工作單元分派給工作節(jié)點(diǎn)。
管理器節(jié)點(diǎn)還執(zhí)行維護(hù)群體所需狀態(tài)所需的編排和群集管理功能。管理器節(jié)點(diǎn)選擇一位領(lǐng)導(dǎo)者來執(zhí)行編排任務(wù)。
工作者節(jié)點(diǎn)接收并執(zhí)行從管理器節(jié)點(diǎn)分派的任務(wù)。默認(rèn)情況下,管理器節(jié)點(diǎn)也可以將服務(wù)作為工作節(jié)點(diǎn)運(yùn)行,但您可以將它們配置為獨(dú)占運(yùn)行管理器任務(wù),并且是純管理器節(jié)點(diǎn)。代理在每個(gè)工作節(jié)點(diǎn)上運(yùn)行并報(bào)告分配給它的任務(wù)。工作節(jié)點(diǎn)通知管理節(jié)點(diǎn)其分配任務(wù)的當(dāng)前狀態(tài),以便管理員可以維護(hù)每個(gè)工作人員的期望狀態(tài)。
服務(wù)是任務(wù)的定義,經(jīng)理或工作節(jié)點(diǎn)上執(zhí)行。它是群體系統(tǒng)的中心結(jié)構(gòu),也是群體與用戶互動(dòng)的主要根源。
在創(chuàng)建服務(wù)時(shí),您可以指定要使用哪個(gè)容器映像以及要在正在運(yùn)行的容器中執(zhí)行哪些命令。
在復(fù)制服務(wù)模型中,swarm管理器根據(jù)您在所需狀態(tài)中設(shè)置的比例在節(jié)點(diǎn)之間分配特定數(shù)量的副本任務(wù)。
對(duì)于全局服務(wù),群集為群集中每個(gè)可用節(jié)點(diǎn)上的服務(wù)運(yùn)行一個(gè)任務(wù)。
任務(wù)攜帶多克爾容器和在容器內(nèi)部運(yùn)行的命令。它是群體的原子調(diào)度單位。管理器節(jié)點(diǎn)根據(jù)服務(wù)規(guī)模中設(shè)置的副本數(shù)量將任務(wù)分配給工作節(jié)點(diǎn)。一旦任務(wù)分配給節(jié)點(diǎn),它就不能移動(dòng)到另一個(gè)節(jié)點(diǎn)。它只能在分配的節(jié)點(diǎn)上運(yùn)行或失敗。
swarm管理器使用入口負(fù)載平衡來公開要在群集外部提供的服務(wù)。swarm manager可以自動(dòng)為服務(wù)分配一個(gè)PublishedPort,或者您可以為該服務(wù)配置一個(gè)PublishedPort。您可以指定任何未使用的端口。如果您不指定端口,那么swarm管理器將為該服務(wù)分配一個(gè)30000-32767范圍內(nèi)的端口。
外部組件(如云負(fù)載平衡器)可以訪問群集中任何節(jié)點(diǎn)的PublishedPort上的服務(wù),而不管該節(jié)點(diǎn)當(dāng)前是否正在運(yùn)行該服務(wù)的任務(wù)。群路由中的所有節(jié)點(diǎn)都會(huì)連接到正在運(yùn)行的任務(wù)實(shí)例。
Swarm模式有一個(gè)內(nèi)部DNS組件,可自動(dòng)為群集中的每個(gè)服務(wù)分配一個(gè)DNS條目。swarm管理器使用內(nèi)部負(fù)載平衡根據(jù)服務(wù)的DNS名稱在群集內(nèi)的服務(wù)之間分配請(qǐng)求。