守护程序的错误响应:节点加入之前已达到超时

问题描述 投票:0回答:4

我一直在尝试将工作人员加入管理节点,但我无法做到。我的管理节点正在运行 ubuntu 18 的个人笔记本电脑上运行。我尝试创建的工作节点位于也运行 ubuntu 的 ec2 实例上。 为了创建管理器节点,我编写了此代码并成功创建了它。

docker swarm init --advertise-addr 192.168.10.10:2377

返回:


To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-2ywtsoky86nabtq10try9jwnap7j3guigh1hywcfyb5u4tv0m5-a8zwarpuk1j79hy60yke2hrbk 192.168.10.10:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

之后我转到我的 ec2 实例 ubuntu 并运行此命令:

docker swarm join --token SWMTKN-1-2ywtsoky86nabtq10try9jwnap7j3guigh1hywcfyb5u4tv0m5-a8zwarpuk1j79hy60yke2hrbk 192.168.10.10:2377

这向我显示了这个错误:

Error response from daemon: Timeout was reached before node joined. The attempt to join the swarm will continue in the background. Use the "docker info" command to see the current swarm status of your node.

我尝试在两个系统上的防火墙上允许端口 2377 并重新启动它,但它仍然不起作用。有谁知道无法连接的原因吗?

更新1:我也尝试过匹配两个系统的时区,但这也不起作用

谢谢

docker docker-swarm docker-swarm-mode
4个回答
2
投票

您可以运行

netstat -tulpn | grep LISTEN
查看您需要允许的所有端口。就我而言,它是:

ufw allow 22/tcp &&
ufw allow 53/tcp &&
ufw allow 2377/tcp &&
ufw allow 7946/tcp &&
ufw allow 7946/udp &&
ufw allow 4789/udp &&
ufw reload &&
ufw enable &&
systemctl restart docker

1
投票

如果您在某些公共云上运行,请确保 EC2 安全组中的访问列表并允许该端口上的主机之间的连接。


0
投票

我也遇到了同样的问题。首先,尝试从工作节点服务器通过 telnet 连接到启用了 swarm 的服务器。在我的问题中,这不起作用,这意味着我运行 docker swarm join 命令时遇到的错误与防火墙有关。作为解决方案,我在将成为第一个工作节点的服务器上的防火墙中允许 2377/TCP 端口。但这不是解决方案。第二次,我在具有管理器节点的服务器上的防火墙中允许 2377/TCP 端口。在这种情况下,工作节点能够加入集群。

ufw 允许 2377/tcp


0
投票

虽然上述答案有效,但让 docker swarm 在 EC2 实例上工作的更好方法是在 Manager 节点的安全组中编辑入站规则

需要以下端口:

  1. 2377 上的 TCP - 用于与管理器节点以及管理器节点之间的通信

  2. 7946 上的 TCP/UDP - 用于覆盖网络节点发现

  3. 4789 上的 UDP - 用于覆盖网络流量

开放主机之间的协议和端口

© www.soinside.com 2019 - 2024. All rights reserved.