Docker Swarm 作为管理器加入失败,但作为工作者加入成功

Docker Swarm 作为管理器加入失败,但作为工作者加入成功

我正在使用 Docker CE 19.03 和三台 CentOS 7 机器创建一个 3 管理器 Docker Swarm。

我已经通过 yum 安装了 docker,启用了服务并启动了它。

我已经创建了一个防火墙“服务”并允许(根据docker文档):

  • TCP 端口 2377 用于集群管理通信
  • TCP 和 UDP 端口 7946 用于节点之间的通信
  • UDP 端口 4789 用于覆盖网络流量

我能够初始化 Swarm 并加入一个工作服务器。然而,我尝试以管理者身份加入第三台服务器,但失败了

守护进程的错误响应:管理器已停止:无法初始化 Raft 节点:rpc 错误:代码 = 未知 desc = 无法使用其公布的地址连接到潜在的新集群成员:rpc 错误:代码 = DeadlineExceeded desc = 超出上下文截止时间

所以我退出docker swarm leave并尝试以工人身份加入。成功了,没有问题。那么为什么我以经理身份加入会失败,而以工人身份加入会成功呢?

我尝试允许 2376/tcp(每https://www.digitalocean.com/community/tutorials/how-to-configure-the-linux-firewall-for-docker-swarm-on-centos-7) 并在一个管理器上禁用firewalld以查看是否是防火墙问题,但我收到了同样的错误。

答案1

所以,吸取教训,相信错误信息。

我应用了防火墙服务模板,但忘记重新加载防火墙,因此端口实际上并未打开。显然,所有这些端口实际上都不是作为工作者加入所必需的,而是作为经理加入所必需的。

我注意到,在我的负载均衡器中,我的容器经常在该主机上显示为失败,但事实并非如此,这导致我仔细检查所有内容。

答案2

swarm token 有默认的使用期限,可以重新创建 token 来加入

相关内容