docker swarm英文文檔學習-7-在集羣中管理節點

Manage nodes in a swarm在集羣中管理節點

List nodes列舉節點

爲了查看集羣中的節點列表,能夠在管理節點中運行docker node ls:node

$ 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顯示調度程序是否能夠向節點分配任務:linux

  • Active意味着調度程序能夠將任務分配給節點。
  • Pause意味着調度程序不會向節點分配新任務,但現有任務仍在運行。
  • Drain意味着調度程序不會向節點分配新任務。調度器關閉全部現有任務,並在可用節點上調度它們。

MANAGER STATUS列顯示了Raft共識中節點的參與狀況:
沒有值表示不參與集羣管理的工做節點。
Leader意味着節點是爲集羣作出全部集羣管理和編配決策的主要管理節點。
Reachable意味着該節點是參與raft共識仲裁的管理節點。若是leader節點不可用,則該節點有資格選舉爲新的leader。
Unavailable意味着節點是沒法與其餘管理器通訊的管理器。若是一個管理器節點變成Unavailable,你應該將一個新的管理器節點加入到集羣中,或者將一個工做節點提高爲一個管理器。
有關集羣管理的更多信息,請參閱 Swarm administration guideios

 

Inspect an individual node查看單個節點

你能夠在管理器節點上運行docker node inspect <NODE-ID>,以查看單個節點的詳細信息。輸出默認爲JSON格式,可是你能夠傳遞--pretty標誌以人類可讀的格式打印結果。例如:docker

$ docker node inspect self --pretty

ID:                     ehkv3bcimagdese79dn78otj5
Hostname:               node-1
Joined 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

 

Update a node更新節點

Change node availability 改變節點可用性(availability)屬性

更改節點可用性可以讓你:
耗盡drain管理器節點,使其僅執行羣集管理任務,且不可用於任務分配。
耗盡drain一個節點,以便你能夠對其進行維護。
暫停pause一個節點,使它不能接收新任務。
恢復不可用unavailable或暫停paused的節點可用狀態。
例如,要更改管理器節點以耗盡Drain可用性:json

$ docker node update --availability drain node-1

node-1

See list nodes for descriptions of the different availability options.api

 

Add or remove label metadata添加或移除標籤元數據

節點標籤提供了一種靈活的節點組織方法。你還能夠在服務約束中使用節點標籤。在建立服務時應用約束,以限制調度程序爲該服務分配任務的節點。
在管理節點上運行docker node update --label-add,向節點添加標籤元數據。--label-add標誌支持<key>值或<key>=<value>鍵值對。
對於要添加的每一個節點標籤,傳遞--label-add標記一次:安全

$ docker node update --label-add foo --label-add bar=baz node-1

node-1

使用docker節點更新爲節點設置的標籤僅適用於集羣中的節點實體。不要將它們與dockerd的docker守護進程標籤混淆。
所以,可使用節點標籤將關鍵任務限制在知足某些需求的節點上。例如,只在應該運行特殊工做負載的機器上調度,例如知足PCI-SS聽從性的機器。
折衷的工做程序沒法折衷這些特殊的工做負載,由於它沒法更改節點標籤。
然而,引擎標籤仍然頗有用,由於一些不影響容器安全編排的特性最好以分散的方式設置。例如,引擎能夠有一個標籤來指示它具備某種類型的磁盤設備,這可能與安全性沒有直接關係。這些標籤更容易被羣編配器「信任」。
有關服務約束的更多信息,請參閱docker service create CLI referenceide

 

Promote or demote a node提高或降級節點

你能夠將工做節點提高爲manager角色。當管理節點不可用時,或者須要脫機進行維護時,這很是有用。相似地,你能夠將manager節點降級爲worker角色。ui

注意:不管你提高或降級節點的緣由是什麼,你都必須始終維護集羣中管理器節點的仲裁。有關更多信息,請參閱Swarm administration guidespa

若要提高一個或一組節點,請從管理節點運行docker node promote:

$ docker node promote node-3 node-2

Node node-3 promoted to a manager in the swarm.
Node node-2 promoted to a manager in the swarm.

若要降級一個或一組節點,請從管理節點運行docker node demote:

$ docker node demote node-3 node-2

Manager node-3 demoted in the swarm.
Manager node-2 demoted in the swarm.

docker node promotedocker node demote 命令分別是docker node update --role managerdocker node update --role worker命令的簡易版

 

Install plugins on swarm nodes在集羣節點中安裝插件

僅支持Edge :此選項僅在Docker CE Edge 版本中可用。參見 Docker CE Edge

若是你的swarm服務依賴於一個或多個插件,那麼這些插件須要在服務可能部署的每一個節點上可用。你能夠手動在每一個節點上安裝插件,或者編寫安裝腳本。在Docker 17.07及更高版本中,你還能夠經過指定PluginSpec而不是ContainerSpec來使用Docker API以相似全局服務的方式部署插件。

注意:目前尚未辦法使用Docker CLI或Docker Compose將插件部署到集羣中。此外,不可能從私有存儲庫安裝插件。

PluginSpec是由插件開發人員定義的。要將插件添加到全部Docker節點,請使用service/create API,傳遞在TaskTemplate中定義的PluginSpec JSON。

 

Leave the swarm離開集羣

在一個節點中運行docker swarm leave來將其從集羣中移除

好比下面在工做節點中離開集羣:

$ docker swarm leave

Node left the swarm.

當節點離開集羣時,Docker引擎在集羣模式下中止運行。協調器再也不向節點調度任務。
若是節點是管理器節點,則會收到關於維護仲裁的警告。若要覆蓋警告,請傳遞--force標誌。若是最後一個管理器節點離開集羣,那麼集羣將不可用,須要你採起災難恢復措施。
有關維護仲裁和災難恢復的信息,請參閱Swarm administration guide
在節點離開集羣以後,你能夠在管理器節點上運行docker node rm命令來從節點列表中刪除該節點,如:

$ docker node rm node-2
相關文章
相關標籤/搜索