我正在尝试使用覆盖网络设置docker swarm。我在aws上有一些主机,而其他主机是运行Ubuntu的笔记本电脑(与aws相同)。每个节点都有一个静态的公共IP。我创建了一个覆盖网络,如下所示:
docker network create --driver=overlay --attachable test-net
我在aws主机之一上创建了一个群集网络。每个其他节点都可以加入该群集网络。
但是,当我在不在aws上的任何节点上运行docker run -it --name alpine2 --network test-net alpine
时,都会出现错误:docker: Error response from daemon: attaching to network failed, make sure your network options are correct and check manager logs: context deadline exceeded.
但是,如果我在任何aws主机上运行相同的命令,则一切工作正常。在网络/端口方面,我还需要做更多的事情吗?aws上有一些节点,而其他节点则没有?
我打开了所有计算机上群联网所需的端口。
编辑:在管理器节点中列出时,所有节点都标记为“活动”。
更新通过打开相应的端口解决了此问题。现在,如果所有节点都基于Linux,则可以使用。但是,当我尝试使用Linux(ubuntu)操作系统与管理器建立群时,mac os机器无法加入该群。
答案 0 :(得分:1)
检查以下端口是否在两台计算机上均已打开。
2377
7946
4789
您可以使用ufw
允许端口:
ufw allow 2377/tcp
答案 1 :(得分:0)
检查节点是否处于耗尽状态:
docker node inspect --format {{.Spec.Availability}} node
如果是,则更新状态:
docker node update --availability active node
这是解释:
决议
当节点处于耗尽状态时,应该采取的预期行为 无法分配群集模式资源,例如多主机 将网络IP地址覆盖到该节点上。 当前在群首之间提供消息传递机制,其中 IP地址管理发回到请求的工作节点 IP地址。因此,泊坞窗运行失败,超过了上下文截止日期。 内部工程问题升级/ 292已打开,可提供 将来的Docker守护程序版本中出现了更好的错误消息。
答案 2 :(得分:0)
我遇到了类似的问题,通过确保节点的 ENGINE VERSION 相同,设法解决了这个问题。
sudo docker node ls