将节点加入集群
目录
首次创建 Swarm 时,您会将单个 Docker Engine 置于 Swarm 模式。为了充分利用 Swarm 模式,您可以向 Swarm 添加节点:
- 添加工作节点可以增加容量。当您向集群部署服务时,引擎会在可用节点上调度任务,无论这些节点是工作节点还是管理节点。当您将工作节点添加到集群中时,可以扩大集群规模以处理更多任务,同时不会影响管理节点的 Raft 共识机制。
- 管理节点可提高容错能力。管理节点负责执行群集的编排和集群管理功能。在管理节点中,单个领导者节点执行编排任务。如果领导者节点宕机,其余管理节点将选举新的领导者并恢复群集状态的编排和维护。默认情况下,管理节点也会运行任务。
Docker Engine 根据您为
docker swarm join 命令提供的 join-token 加入 Swarm。节点仅在加入时使用该令牌。如果您随后轮换令牌,不会影响现有的 Swarm 节点。请参阅
在 Swarm 模式下运行 Docker Engine。
Join as a worker node
要获取包括 worker 节点 join token 在内的 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 切换到 Swarm 模式。
- 向管理器请求 TLS 证书。
- 使用主机名命名节点。
- 根据群集令牌将当前节点加入基于管理器监听地址的群集。
- 将当前节点设置为
Active可用状态,表示该节点可以接收来自调度器的任务。 - 将
ingress覆盖网络扩展到当前节点。
作为管理节点加入
当您运行 docker swarm join 并传递管理令牌时,Docker Engine 会像工作节点一样切换到 Swarm 模式。管理节点也参与 Raft 共识。新节点应为 Reachable,但现有的管理器仍然是 Swarm 的 Leader。
Docker 建议每个集群配置三个或五个管理器节点以实现高可用性。由于 Swarm 模式的管理器节点使用 Raft 协议共享数据,因此管理器的数量必须为奇数。只要超过半数的管理器节点可用(即达到法定人数),Swarm 集群就能继续正常运行。
有关Swarm管理器和Swarm管理的更多详细信息,请参阅 管理和维护Docker Engine集群。
要检索包括管理节点的加入令牌(join token)在内的加入命令,请在管理节点上运行 以下命令:
$ 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
在新管理节点上运行输出中的命令,将其加入 Swarm:
$ docker swarm join \
--token SWMTKN-1-61ztec5kyafptydic6jfc1i33t37flcl4nuipzcusor96k7kby-5vy9t8u35tuqm7vh67lrz9xp6 \
192.168.99.100:2377
This node joined a swarm as a manager.
了解更多
swarm join命令行参考- Swarm 模式教程