?
本文檔使用 php中文網(wǎng)手冊(cè) 發(fā)布
作為群體管理生命周期的一部分,您可能需要查看或更新節(jié)點(diǎn),如下所示:
列出群中的節(jié)點(diǎn)
檢查單個(gè)節(jié)點(diǎn)
更新節(jié)點(diǎn)
離開(kāi)群
要從docker node ls
管理器節(jié)點(diǎn)查看群集中的節(jié)點(diǎn)列表,請(qǐng)執(zhí)行以下操作:
$ docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS 46aqrk4e473hjbt745z53cr3t node-5 Ready Active Reachable 61pi3d91s0w3b90ijw3deeb2q node-4 Ready Active Reachable a5b2m3oghd48m8eu391pefq5u node-3 Ready Active e7p8btxeu3ioshyuj6lxiv6g0 node-2 Ready Active ehkv3bcimagdese79dn78otj5 * node-1 Ready Active Leader
該AVAILABILITY
列顯示調(diào)度程序是否可以將任務(wù)分配給節(jié)點(diǎn):
Active
意味著調(diào)度程序可以將任務(wù)分配給節(jié)點(diǎn)。
Pause
意味著調(diào)度程序不會(huì)將新任務(wù)分配給節(jié)點(diǎn),但現(xiàn)有任務(wù)仍在運(yùn)行。
Drain
意味著調(diào)度程序不會(huì)將新任務(wù)分配給節(jié)點(diǎn)。調(diào)度程序關(guān)閉所有現(xiàn)有任務(wù)并在可用節(jié)點(diǎn)上調(diào)度它們。
該MANAGER STATUS
列顯示節(jié)點(diǎn)參與 Raft 共識(shí):
沒(méi)有值表示不參與群管理的工作節(jié)點(diǎn)。
Leader
意味著節(jié)點(diǎn)是為群體進(jìn)行所有群集管理和編排決策的主要管理者節(jié)點(diǎn)。
Reachable
意味著該節(jié)點(diǎn)是參與Raft共識(shí)法定人數(shù)的經(jīng)理節(jié)點(diǎn)。如果領(lǐng)導(dǎo)者節(jié)點(diǎn)變得不可用,該節(jié)點(diǎn)有資格被選為新領(lǐng)導(dǎo)者。
Unavailable
意味著節(jié)點(diǎn)是無(wú)法與其他經(jīng)理溝通的經(jīng)理。如果管理器節(jié)點(diǎn)變得不可用,則應(yīng)該將新管理器節(jié)點(diǎn)加入到群集中,或者將工作器節(jié)點(diǎn)提升為管理器。
有關(guān)群體管理的更多信息,請(qǐng)參閱群體管理指南。
您可以docker node inspect <NODE-ID>
在管理器節(jié)點(diǎn)上運(yùn)行以查看單個(gè)節(jié)點(diǎn)的詳細(xì)信息。輸出默認(rèn)為JSON格式,但您可以傳遞該--pretty
標(biāo)記以便以可讀格式打印結(jié)果。例如:
$ docker node inspect self --pretty ID: ehkv3bcimagdese79dn78otj5 Hostname: node-1Joined at: 2016-06-16 22:52:44.9910662 +0000 utc Status: State: Ready Availability: Active Manager Status: Address: 172.17.0.2:2377 Raft Status: Reachable Leader: Yes Platform: Operating System: linux Architecture: x86_64 Resources: CPUs: 2 Memory: 1.954 GiB Plugins: Network: overlay, host, bridge, overlay, null Volume: local Engine Version: 1.12.0-dev
您可以修改節(jié)點(diǎn)屬性,如下所示:
更改節(jié)點(diǎn)可用性
添加或刪除標(biāo)簽元數(shù)據(jù)
更改節(jié)點(diǎn)角色
更改節(jié)點(diǎn)可用性可讓您:
耗盡管理器節(jié)點(diǎn),以便僅執(zhí)行群集管理任務(wù)并且不可用于任務(wù)分配。
排空一個(gè)節(jié)點(diǎn),這樣你就可以把它拿下來(lái)進(jìn)行維護(hù)。
暫停節(jié)點(diǎn),使其無(wú)法接收新任務(wù)。
恢復(fù)不可用或暫停的節(jié)點(diǎn)可用狀態(tài)。
例如,要將管理器節(jié)點(diǎn)更改為Drain
可用性:
$ docker node update --availability drain node-1node-1
有關(guān)不同可用性選項(xiàng)的說(shuō)明,請(qǐng)參閱列表節(jié)點(diǎn)。
節(jié)點(diǎn)標(biāo)簽提供了一種靈活的節(jié)點(diǎn)組織方法。您也可以在服務(wù)約束中使用節(jié)點(diǎn)標(biāo)簽。創(chuàng)建服務(wù)時(shí)應(yīng)用約束以限制調(diào)度程序?yàn)榉?wù)分配任務(wù)的節(jié)點(diǎn)。
docker node update --label-add
在管理器節(jié)點(diǎn)上運(yùn)行以將標(biāo)簽元數(shù)據(jù)添加到節(jié)點(diǎn)。該--label-add
標(biāo)志支持<key>
一<key>=<value>
對(duì)或一對(duì)。
--label-add
為要添加的每個(gè)節(jié)點(diǎn)標(biāo)簽傳遞一次標(biāo)志:
$ docker node update --label-add foo --label-add bar=baz node-1node-1
使用碼頭節(jié)點(diǎn)更新為節(jié)點(diǎn)設(shè)置的標(biāo)簽僅適用于群內(nèi)的節(jié)點(diǎn)實(shí)體。不要將它們與 dockerd 的 docker 守護(hù)進(jìn)程標(biāo)簽混淆。
因此,可以使用節(jié)點(diǎn)標(biāo)簽將關(guān)鍵任務(wù)限制為滿(mǎn)足特定要求的節(jié)點(diǎn)。例如,僅在需要運(yùn)行特殊工作負(fù)載的機(jī)器上進(jìn)行調(diào)度,例如符合 PCI-SS合規(guī)性的機(jī)器。
受影響的工作人員無(wú)法損害這些特殊工作負(fù)載,因?yàn)樗鼰o(wú)法更改節(jié)點(diǎn)標(biāo)簽。
然而,引擎標(biāo)簽仍然很有用,因?yàn)橐恍┎挥绊懠b箱安全協(xié)調(diào)的功能可能更好地以分散方式設(shè)置。例如,引擎可以有一個(gè)標(biāo)簽來(lái)表明它具有某種類(lèi)型的磁盤(pán)設(shè)備,這可能與安全性無(wú)關(guān)。這些標(biāo)簽更容易被 swarm 協(xié)調(diào)器“信任”。
docker service create
有關(guān)服務(wù)約束的更多信息,請(qǐng)參閱 CLI參考。
您可以將工作者節(jié)點(diǎn)提升為經(jīng)理角色。當(dāng)管理器節(jié)點(diǎn)變得不可用或者您想讓管理器脫機(jī)進(jìn)行維護(hù)時(shí),這非常有用。同樣,您可以將經(jīng)理節(jié)點(diǎn)降級(jí)為輔助角色。
注意:維護(hù)法定數(shù)量無(wú)論您提升或降級(jí)節(jié)點(diǎn)的理由如何,您都必須始終維護(hù)群體中的法定管理器節(jié)點(diǎn)。有關(guān)更多信息,請(qǐng)參閱 Swarm 管理指南。
要提升節(jié)點(diǎn)或一組節(jié)點(diǎn),請(qǐng)docker node promote
從管理器節(jié)點(diǎn)運(yùn)行:
$ docker node promote node-3 node-2Node node-3 promoted to a manager in the swarm.Node node-2 promoted to a manager in the swarm.
要降級(jí)一個(gè)節(jié)點(diǎn)或一組節(jié)點(diǎn),請(qǐng)docker node demote
從管理器節(jié)點(diǎn)運(yùn)行:
$ docker node demote node-3 node-2Manager node-3 demoted in the swarm.Manager node-2 demoted in the swarm.
docker node promote
和docker node demote
是和為了方便的命令docker node update --role manager
和docker node update --role worker
分別。
僅限邊緣:此選項(xiàng)僅在 Docker CE Edge 版本中可用。請(qǐng)參閱 Docker CE Edge。
如果您的 swarm 服務(wù)依賴(lài)于一個(gè)或多個(gè)插件,則這些插件需要在可能部署服務(wù)的每個(gè)節(jié)點(diǎn)上可用。您可以在每個(gè)節(jié)點(diǎn)上手動(dòng)安裝插件或編寫(xiě)安裝腳本。在 Docker 17.07 及更高版本中,您也可以使用 Docker API 以類(lèi)似于全局服務(wù)的方式部署插件,只需指定一個(gè)PluginSpec
而不是一個(gè) ContainerSpec
。
注意:目前沒(méi)有辦法使用 Docker CLI 或 Docker Compose 將插件部署到 swarm。另外,從私有存儲(chǔ)庫(kù)安裝插件是不可能的。
這PluginSpec
是由插件開(kāi)發(fā)人員定義的。要將插件添加到所有 Docker 節(jié)點(diǎn),請(qǐng)使用service/create
API,并傳遞在中PluginSpec
定義的 API TaskTemplate
。
docker swarm leave
在節(jié)點(diǎn)上運(yùn)行命令將其從群集中刪除。
例如,要將群體留在工作者節(jié)點(diǎn)上:
$ docker swarm leave Node left the swarm.
當(dāng)一個(gè)節(jié)點(diǎn)離開(kāi)群集時(shí),Docker 引擎停止以群集模式運(yùn)行。Orchestrator 不再將任務(wù)安排到節(jié)點(diǎn)。
如果節(jié)點(diǎn)是經(jīng)理節(jié)點(diǎn),您將收到有關(guān)維持法定人數(shù)的警告。要覆蓋警告,請(qǐng)傳遞該--force
標(biāo)志。如果最后一個(gè)管理器節(jié)點(diǎn)離開(kāi)群集,則群集變得不可用,要求您采取災(zāi)難恢復(fù)措施。
有關(guān)維護(hù)仲裁和災(zāi)難恢復(fù)的信息,請(qǐng)參閱 Swarm 管理指南。
節(jié)點(diǎn)離開(kāi)群集后,可以docker node rm
在管理器節(jié)點(diǎn)上運(yùn)行該命令以從節(jié)點(diǎn)列表中刪除該節(jié)點(diǎn)。
例如:
$ docker node rm node-2
群體管理指南
Docker 引擎命令行參考
Swarm模式教程