0

我试图在两个不同的网络上运行 docker swarm。

  • 第一个网络是 10.10.100.x/24
  • 第二个网络是 10.10.150.x/24

两个网络可以互相看到。它们之间没有防火墙规则来阻止任何流量。具体来说,我测试了 7946 TCP 和 UDP 以及 4789 UDP。我可以确认,我可以在两个端口和两个协议上从第一个网络连接到第二个网络。而且从第二个网络到第一个网络也没有任何问题。

Docker swarm 启动并运行,使用的引擎是20.10.11 我可以看到所有节点都有status=Readyavailability=Active

入口网络是默认的:

在此处输入图像描述

我也可以看到那里列出的所有同行。

但是,当我使用 port 将任何服务部署到任何节点时-p 20000:80,我只能从部署它的网络中看到该节点。

  • 如果服务登陆第一个网络,它只能通过来自第一个网络的节点访问,而不是来自第二个网络。
  • 如果服务登陆第二个网络,它只能通过来自第二个网络的节点访问,而不是来自第一个网络。

在此处输入图像描述

任何想法如何解决这个问题?

谢谢


更新1:

尝试使用附加参数运行 swarm docker swarm init --default-addr-pool 172.100.0.0/16。结果保持不变。


更新 2:基于@BMitch 的建议

我用 验证sudo tcpdump -nn -s0 -v port 4789 or 7946,端口 7946 有效(UDP 和 TCP)。我还使用前面的tcpdump命令和nc -z -v -u 10.10.150.200 4789(从第一个网络运行)验证了端口 4789 也可以正常工作。

4

0 回答 0