Docker swarm集群增加节点
  • docker swarm初始化
docker swarm init
  • docker swarm 增加节点
在已经初始化的机器上执行:# docker swarm join-token manager 
To add a manager to this swarm, run the following command:

    docker swarm join \
    --token SWMTKN-1-3by2djvsu8cyzo8pzzqrrsmoiszlcmj1ymsyzrqu0e5m4myar6-3ypif5p1vyzv7j7h362ah1kbj \
    192.168.52.37:2377
将结果复制到各个节点机器上执行即可。

查看集群节点:
[root@node_t_36 zyx_p]# docker node ls
ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS
5i800ms4daxhfk4z02wux52bl     node_t_37           Ready               Active              Reachable
kcd9oc41643o24fpmdi0j25s4     node_t_38           Ready               Active              Reachable
sacj1t4flf4e275d2fwfho6q3 *   node_t_36           Ready               Active              Leader

  • 节点MANAGER STATUS列说明:

显示节点是属于manager或者worker,没有值 表示不参与群管理的工作节点。

  • Leader 意味着该节点是使得群的所有群管理和编排决策的主要管理器节点。
  • Reachable 意味着节点是管理者节点正在参与Raft共识。如果领导节点不可用,则该节点有资格被选为新领导者。
  • Unavailable 意味着节点是不能与其他管理器通信的管理器。如果管理器节点不可用,您应该将新的管理器节点加入群集,或者将工作器节点升级为管理器。
  • 节点AVAILABILITY列说明:

显示调度程序是否可以将任务分配给节点

  • Active 意味着调度程序可以将任务分配给节点。
  • Pause 意味着调度程序不会将新任务分配给节点,但现有任务仍在运行。
  • Drain 意味着调度程序不会向节点分配新任务。调度程序关闭所有现有任务并在可用节点上调度它们。
Docker swarm集群删除节点
  • docker swarm集群已经有容器服务,删除节点node_t_37 的时候,需要先将该节点的服务迁移到其他节点,确保容器服务正常
[root@node_t_37 zyx_p]# docker node  update --help

Usage:  docker node update [OPTIONS] NODE

Update a node

Options:
      --availability string   Availability of the node ("active"|"pause"|"drain")
      --help                  Print usage
      --label-add list        Add or update a node label (key=value)
      --label-rm list         Remove a node label if exists
      --role string           Role of the node ("worker"|"manager")




[root@node_t_37 ~]#docker node  update --availability drain node_t_37 将节点停用,该节点上的容器会迁移到其他节点
[root@node_t_37 ~]#docker ps  检查容器迁移情况,当node_t_37的容器都迁移完后,停止docker服务

登录到node_t_36上,将节点node_t_37降级成worker,然后删除。只能删除worker基本的节点。
[root@node_t_36 zyx_p]# docker node demote node_t_37  降级
[root@node_t_37 ~]#systemctl stop docker.service 停止docker服务(删除节点前,需先停该节点的docker服务)
[root@node_t_36 zyx_p]# docker node rm node_t_37 删除 

删除后的集群: [root@node_t_36 zyx_p]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
kcd9oc41643o24fpmdi0j25s4 node_t_38 Ready Active Reachable
sacj1t4flf4e275d2fwfho6q3 * node_t_36 Ready Active Leader