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