首次创建集群时,将单个Docker Engine置于集群模式。要充分利用群集模式,可以将节点添加到群集中:
添加工作程序节点会增加容量。当您将服务部署到集群时,引擎会在可用节点上调度任务,无论它们是工作节点还是管理节点。将工作组添加到工作组时,将增加工作组的规模以处理任务,而不会影响经理筏的共识。
管理器节点增加了容错能力。管理器节点执行集群的编排和集群管理功能。在管理者节点中,单个领导者节点负责执行编排任务。如果领导者节点发生故障,其余的管理者节点将选举新的领导者,并恢复编排和维护群状态。默认情况下,管理器节点还运行任务。
Docker引擎将根据您提供给命令的连接令牌来加入群集docker swarm join。节点仅在加入时使用令牌。如果随后旋转令牌,它不会影响现有的群集节点。
作为工作节点加入
要检索包括工作节点的加入令牌的加入命令,请在管理器节点上运行以下命令:
$ docker swarm join-token worker
To add a worker to this swarm, run the following command:
docker swarm join
--token SWMTKN-1-49nj1cmql0jkz5s954yi3oex3nedyz0fb0xx14ie39trti4wxv-8vxv8rssmk743ojnwacrr2e7c
192.168.99.100:2377
从worker的输出中运行命令以加入swarm:
$ docker swarm join
--token SWMTKN-1-49nj1cmql0jkz5s954yi3oex3nedyz0fb0xx14ie39trti4wxv-8vxv8rssmk743ojnwacrr2e7c
192.168.99.100:2377
This node joined a swarm as a worker.
该docker swarm join命令执行以下操作:
将当前节点上的Docker Engine切换到群组模式。
向管理器请求TLS证书。
用机器主机名命名节点
根据群组令牌,在管理器侦听地址处将当前节点加入群组。
将当前节点设置为Active可用性,这意味着它可以从调度程序接收任务。
将ingress覆盖网络扩展到当前节点。
作为管理员节点加入
当您运行docker swarm join并传递管理器令牌时,Docker引擎将切换到集群模式,与工作程序相同。管理者节点也参加筏共识。新的节点应该是Reachable,但是现有的管理器仍然是群Leader。
Docker建议每个集群三个或五个管理器节点以实现高可用性。由于群体模式管理器节点使用Raft共享数据,因此必须有奇数个管理器。只要有超过一半的管理器节点达到法定仲裁人数,群集就可以继续运行。
有关集群管理器和管理集群的更多详细信息,请参阅 管理和维护Docker引擎集群。
要检索包括管理者节点的加入令牌的加入命令,请在管理者节点上运行以下命令:
$ docker swarm join-token manager
To add a manager to this swarm, run the following command:
docker swarm join
--token SWMTKN-1-61ztec5kyafptydic6jfc1i33t37flcl4nuipzcusor96k7kby-5vy9t8u35tuqm7vh67lrz9xp6
192.168.99.100:2377
从新管理器节点上的输出运行命令,以将其加入群集:
$ docker swarm join
--token SWMTKN-1-61ztec5kyafptydic6jfc1i33t37flcl4nuipzcusor96k7kby-5vy9t8u35tuqm7vh67lrz9xp6
192.168.99.100:2377
This node joined a swarm as a manager.