Swa*_*dey 5 networking docker docker-swarm
我正在尝试使用覆盖网络设置 docker swarm。我在 aws 上有一些主机,而其他是运行 Ubuntu 的笔记本电脑(与在 aws 上相同)。每个节点都有一个静态公共 IP。我创建了一个覆盖网络:
docker network create --driver=overlay --attachable test-net
我在其中一台 aws 主机上创建了一个群网络。每个其他节点都能够加入该群网络。
但是,当我docker run -it --name alpine2 --network test-net alpine在非 aws 的任何节点上运行时,出现错误: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 上有一些节点而其他节点没有,我还需要在网络/端口方面做些什么吗?
我已经在所有机器上打开了 swarm 网络所需的端口。
编辑:在管理器节点中列出时,所有节点都被标记为“活动”。
更新通过打开相应的端口解决了这个问题。如果所有节点都基于 Linux,它现在可以工作。但是,当我尝试将管理器作为 Linux(ubuntu) os 与管理器建立群时,mac os 机器无法加入群。
检查节点是否处于耗尽状态:
docker node inspect --format {{.Spec.Availability}} node
Run Code Online (Sandbox Code Playgroud)
如果是,则更新状态:
docker node update --availability active node
Run Code Online (Sandbox Code Playgroud)
这是解释:
解决
当节点处于耗尽状态时,您应该无法向该节点分配 swarm 模式资源(例如多主机覆盖网络 IP 地址)。但是,swarm 模式当前不提供 swarm 之间的消息传递机制领导者,其中 IP 地址管理发生回请求 IP 地址的工作节点。因此 docker run 失败,并且超出了上下文截止日期。内部工程问题升级/292 已开放,以便在 Docker 守护程序的未来版本中提供更好的错误消息。
| 归档时间: |
|
| 查看次数: |
8671 次 |
| 最近记录: |