将节点加入 swarm

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

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

Docker Engine 根据您提供给 docker swarm join 命令的 **加入令牌 (join-token)** 加入 Swarm。节点仅在加入时使用该令牌。如果您随后轮换令牌,则不会影响现有 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.

了解更多

© . This site is unofficial and not affiliated with Kubernetes or Docker Inc.