Linux入门教程:管理swarm(17) – 管理节点,调度器关闭已存在的任
Linux入门教程:管理swarm(17) – 管理节点,调度器关闭已存在的任
在swarm的生命周期中,你可能需要查看或更新节点,如:
列出swarm中的节点 查看单个节点详信息 更新节点 脱离swarm列出节点
在管理节点在执行docker node ls来列出swarm中的节点:
$ 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 LeaderAVAILABILITY显示出调度器是否能分配任务给这个节点:
Active意味着调度器可以分配任务给节点 Pause意味着调度器不能分配任务给节点,不过已存在的任务仍然继续运行 Drain意味着调度器不能分配任务给节点。调度器关闭已存在的任务并调度它们到其它可用节点MANAGER STATUS列显示节点是否参与到Raft一致性:
没有值表示worker节点不参与到swarm管理 Leader表示该节点是主要管理节点,负责全部的swarm管理工作和编排决策。 Reachable表示该节点是一个管理节点并参与到Raft一致性。如果leader节点变为不可用,该节点有资格被选为新的leader。 Unavailable表示该节点是一个管理节点,不过目前不能与其它管理节点通信。如果一个管理节点变为不可用,你应该加入一个新的管理节点或者提升一个worker节点为管理节点。查看单个节点详细信息
你可以在管理节点上执行docker node inspect
更新节点
更新节点状态
更新节点的状态可以:
drain一个管理节点,可以使该节点只完成swarm管理任务,而不接收来自调度器的任务并停止已存在的任务 drain一个节点,你可以下线该节点来进行维护工作 pause一个节点,使它不再接收新任务 restore一个不可用或暂停的节点为可用状态例如,设置一个管理节点为Drain:
$ docker node update --availability drain node-1 node-1添加或删除标签元数据
节点标签提供了一种灵活的节点组织方法。 你还可以在服务约束中使用节点标签。 在创建服务时应用约束,以限制调度器为服务分配任务的节点。
在管理节点上运行docker node update –label-add以将标签元数据添加到节点。 –label-add标志支持
每添加一个节点标签需要传递一次label-add参数:
升级或降级节点
你可以升级一个worker节点为管理节点。这个在管理节点变为不可用或者你想下线管理节点来维护会比较有帮助。当然,你也可以降级一个管理节点为worker节点。
不管你降级和升级节点是出于什么原因,你应该始终确保swarm中管理节点数量为奇数。
在管理节点执行docker node promote来升级一组worker节点:
在管理节点执行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 promote和docker node demote分别是docker node update –role manager和docker node update –role worker命令等效。
脱离节点
要从swarm删除一个节点,首先要执行docker swarm leave命令。
例如从swarm脱离一个worker节点:
当一个节点脱离swarm时,Docker Engine不再以swarm模式运行。orchestrator不再调度任务给该节点。
当节点脱离swarm之后,你可以在管理节点执行docker node rm命令来从节点列表中删除该节点。
例如:
评论暂时关闭