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