©
本文档使用
php.cn手册 发布
作为群体管理生命周期的一部分,您可能需要查看或更新节点,如下所示:
列出群中的节点
检查单个节点
更新节点
离开群
要从docker node ls
管理器节点查看群集中的节点列表,请执行以下操作:
$ 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
列显示调度程序是否可以将任务分配给节点:
Active
意味着调度程序可以将任务分配给节点。
Pause
意味着调度程序不会将新任务分配给节点,但现有任务仍在运行。
Drain
意味着调度程序不会将新任务分配给节点。调度程序关闭所有现有任务并在可用节点上调度它们。
该MANAGER STATUS
列显示节点参与 Raft 共识:
没有值表示不参与群管理的工作节点。
Leader
意味着节点是为群体进行所有群集管理和编排决策的主要管理者节点。
Reachable
意味着该节点是参与Raft共识法定人数的经理节点。如果领导者节点变得不可用,该节点有资格被选为新领导者。
Unavailable
意味着节点是无法与其他经理沟通的经理。如果管理器节点变得不可用,则应该将新管理器节点加入到群集中,或者将工作器节点提升为管理器。
有关群体管理的更多信息,请参阅群体管理指南。
您可以docker node inspect <NODE-ID>
在管理器节点上运行以查看单个节点的详细信息。输出默认为JSON格式,但您可以传递该--pretty
标记以便以可读格式打印结果。例如:
$ 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
您可以修改节点属性,如下所示:
更改节点可用性
添加或删除标签元数据
更改节点角色
更改节点可用性可让您:
耗尽管理器节点,以便仅执行群集管理任务并且不可用于任务分配。
排空一个节点,这样你就可以把它拿下来进行维护。
暂停节点,使其无法接收新任务。
恢复不可用或暂停的节点可用状态。
例如,要将管理器节点更改为Drain
可用性:
$ docker node update --availability drain node-1node-1
有关不同可用性选项的说明,请参阅列表节点。
节点标签提供了一种灵活的节点组织方法。您也可以在服务约束中使用节点标签。创建服务时应用约束以限制调度程序为服务分配任务的节点。
docker node update --label-add
在管理器节点上运行以将标签元数据添加到节点。该--label-add
标志支持<key>
一<key>=<value>
对或一对。
--label-add
为要添加的每个节点标签传递一次标志:
$ docker node update --label-add foo --label-add bar=baz node-1node-1
使用码头节点更新为节点设置的标签仅适用于群内的节点实体。不要将它们与 dockerd 的 docker 守护进程标签混淆。
因此,可以使用节点标签将关键任务限制为满足特定要求的节点。例如,仅在需要运行特殊工作负载的机器上进行调度,例如符合 PCI-SS合规性的机器。
受影响的工作人员无法损害这些特殊工作负载,因为它无法更改节点标签。
然而,引擎标签仍然很有用,因为一些不影响集装箱安全协调的功能可能更好地以分散方式设置。例如,引擎可以有一个标签来表明它具有某种类型的磁盘设备,这可能与安全性无关。这些标签更容易被 swarm 协调器“信任”。
docker service create
有关服务约束的更多信息,请参阅 CLI参考。
您可以将工作者节点提升为经理角色。当管理器节点变得不可用或者您想让管理器脱机进行维护时,这非常有用。同样,您可以将经理节点降级为辅助角色。
注意:维护法定数量无论您提升或降级节点的理由如何,您都必须始终维护群体中的法定管理器节点。有关更多信息,请参阅 Swarm 管理指南。
要提升节点或一组节点,请docker node promote
从管理器节点运行:
$ 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.
要降级一个节点或一组节点,请docker node demote
从管理器节点运行:
$ 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
分别。
仅限边缘:此选项仅在 Docker CE Edge 版本中可用。请参阅 Docker CE Edge。
如果您的 swarm 服务依赖于一个或多个插件,则这些插件需要在可能部署服务的每个节点上可用。您可以在每个节点上手动安装插件或编写安装脚本。在 Docker 17.07 及更高版本中,您也可以使用 Docker API 以类似于全局服务的方式部署插件,只需指定一个PluginSpec
而不是一个 ContainerSpec
。
注意:目前没有办法使用 Docker CLI 或 Docker Compose 将插件部署到 swarm。另外,从私有存储库安装插件是不可能的。
这PluginSpec
是由插件开发人员定义的。要将插件添加到所有 Docker 节点,请使用service/create
API,并传递在中PluginSpec
定义的 API TaskTemplate
。
docker swarm leave
在节点上运行命令将其从群集中删除。
例如,要将群体留在工作者节点上:
$ docker swarm leave Node left the swarm.
当一个节点离开群集时,Docker 引擎停止以群集模式运行。Orchestrator 不再将任务安排到节点。
如果节点是经理节点,您将收到有关维持法定人数的警告。要覆盖警告,请传递该--force
标志。如果最后一个管理器节点离开群集,则群集变得不可用,要求您采取灾难恢复措施。
有关维护仲裁和灾难恢复的信息,请参阅 Swarm 管理指南。
节点离开群集后,可以docker node rm
在管理器节点上运行该命令以从节点列表中删除该节点。
例如:
$ docker node rm node-2
群体管理指南
Docker 引擎命令行参考
Swarm模式教程