将节点加入 Swarm

首次创建 Swarm 时,您会将单个 Docker Engine 置于 Swarm 模式。要充分利用 Swarm 模式,您可以向 Swarm 添加节点。

  • 添加工作节点可提高容量。当您将服务部署到 Swarm 时,引擎会将任务调度到可用节点上,无论它们是工作节点还是管理节点。当您向 Swarm 添加工作节点时,您可以扩展 Swarm 的规模以处理任务,而不会影响管理节点的 Raft 共识。
  • 管理节点提高容错能力。管理节点执行 Swarm 的编排和集群管理功能。在管理节点之间,单个领导者节点执行编排任务。如果领导者节点宕机,其余管理节点会选举一个新的领导者并恢复 Swarm 状态的编排和维护。默认情况下,管理节点也运行任务。

Docker Engine 加入 Swarm 取决于您提供给 docker swarm join 命令的 **join-token**。节点仅在加入时使用该令牌。如果您随后轮换令牌,则不会影响现有的 Swarm 节点。请参阅 在 Swarm 模式下运行 Docker Engine

作为工作节点加入

要在管理节点上检索包含工作节点加入令牌的加入命令,请运行以下命令:

$ 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

在工作节点上运行输出中的命令以加入 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 证书。
  • 使用机器主机名命名节点。
  • 根据 Swarm 令牌,将当前节点加入到管理器监听地址处的 Swarm。
  • 将当前节点的可用性设置为 Active,这意味着它可以接收调度程序的任务。
  • ingress 覆盖网络扩展到当前节点。

作为管理节点加入

当您运行 docker swarm join 并传递管理器令牌时,Docker Engine 会与工作节点一样切换到 Swarm 模式。管理节点也参与 Raft 共识。新节点应该是 Reachable,但现有管理器仍然是 Swarm Leader

Docker 建议每个集群使用三个或五个管理节点来实现高可用性。因为 Swarm 模式管理节点使用 Raft 共享数据,所以必须有奇数个管理器。只要超过一半的管理节点可用,Swarm 就可以继续运行。

有关 Swarm 管理器和管理 Swarm 的更多详细信息,请参阅 管理和维护 Docker Engine 的 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

在新管理节点上运行输出中的命令以将其加入 Swarm:

$ docker swarm join \
  --token SWMTKN-1-61ztec5kyafptydic6jfc1i33t37flcl4nuipzcusor96k7kby-5vy9t8u35tuqm7vh67lrz9xp6 \
  192.168.99.100:2377

This node joined a swarm as a manager.

了解更多