Tl; dr:使用覆盖网络的Docker群集容器无法彼此ping通
我正在尝试创建一个群集,其中包括我的桌面(带有Docker桌面的Windows)和一个Ubuntu VM(桌面PC上的群集管理器)。
创建群体并将其加入可以正常工作。我着手创建一个可附加的覆盖网络,该网络应使用覆盖驱动程序跨越所有节点。我使用全局模式和覆盖网络创建了一个随机的nginx服务,以使该网络在所有节点上都可用。
为了测试连接性,我创建了两个ubuntu容器(一个在Ubuntu上,一个在Windows上),然后将它们加入网络。问题是容器无法互相ping通。我还打开了Windows和Ubuntu VM上的swarm所需的端口(2376、2377、7946、4789)。
适用于Linux的Docker版本:
Version: 19.03.6
API version: 1.40
Go version: go1.12.16
适用于Windows的Docker版本:
Version: 19.03.5
API version: 1.40
Go version: go1.12.12
您知道我如何使连接正常工作吗?
答案 0 :(得分:1)
发现您的问题,因为我遇到了类似的情况。
文档指出覆盖网络在默认情况下是加密的,您不应尝试将 Windows 节点附加到加密网络:
<块引用>不要将 Windows 节点附加到加密的覆盖网络。
Windows 不支持覆盖网络加密。如果 Windows 节点尝试连接到加密的覆盖网络,则不会检测到任何错误,但该节点无法通信。
https://docs.docker.com/network/overlay/#encrypt-traffic-on-an-overlay-network