将节点加入集群
当您第一次创建 Swarm 时,您将单个 Docker 引擎置于 Swarm 模式。要充分利用 Swarm 模式,您可以将节点添加到 Swarm 中:
- 添加工作节点会增加容量。当您将服务部署到集群时,引擎会在可用节点上调度任务,无论它们是工作节点还是管理节点。当您将工作人员添加到集群中时,您会增加集群的规模来处理任务,而不会影响管理器筏共识。
- 管理器节点提高了容错能力。管理器节点为集群执行编排和集群管理功能。在管理节点中,单个领导节点执行编排任务。如果领导者节点出现故障,其余管理器节点将选举新的领导者并恢复集群状态的编排和维护。默认情况下,管理节点也运行任务。
Docker Engine 根据您提供给命令的加入令牌加入集群docker swarm join
。节点仅在加入时使用令牌。如果您随后轮换令牌,它不会影响现有的集群节点。请参阅
以 Swarm 模式运行 Docker 引擎。
作为工作节点加入
要检索包括工作节点的加入令牌的加入命令,请在管理节点上运行以下命令:
$ 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
在工作线程上运行输出中的命令以加入集群:
$ 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 切换为 Swarm 模式。
- 向管理器请求 TLS 证书。
- 使用计算机主机名命名节点。
- 根据 swarm 令牌将当前节点加入到管理器侦听地址处的 swarm。
- 将当前节点设置为
Active
可用性,这意味着它可以从调度程序接收任务。 - 将覆盖网络扩展
ingress
到当前节点。
作为管理节点加入
当您运行docker swarm join
并传递管理器令牌时,Docker 引擎会像工作线程一样切换到 Swarm 模式。管理节点也参与raft共识。新节点应该是这样Reachable
,但现有的管理器仍然是群Leader
。
Docker 建议每个集群配置 3 到 5 个管理节点来实现高可用性。由于 Swarm 模式的管理器节点使用 Raft 共享数据,因此管理器的数量必须是奇数。只要超过一半的管理节点的法定人数可用,集群就可以继续运行。
有关 Swarm 管理器和管理 Swarm 的更多详细信息,请参阅 管理和维护 Docker 引擎 Swarm。
要检索包括管理器节点的加入令牌的加入命令,请在管理器节点上运行以下命令:
$ 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.