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
相关文章
相关标签/搜索