Docker Swarm 模式路由网格不适用于wireguard VPN

Ale*_*isi 7 vpn docker docker-swarm docker-swarm-mode

我正在尝试在 Hetzner 云上设置一个 3 节点 Docker swarm 集群,使用wireguard VPN(在接口上设置wg0)在节点之间构建本地网络。网络可以跨使用VPN的IP节点罚款(端口7946/tcp7946/udp并且4789/udp是开放的报道在这里)。我使用以下命令启动 docker swarm 集群:

docker swarm init --advertise-addr wg0 --listen-addr wg0
docker swarm join --token SWMTKN-1-xxx --advertise-addr wg0 --listen-addr wg0 10.0.0.1:2377
Run Code Online (Sandbox Code Playgroud)

如果我尝试在这个 swarm 上运行一个服务,它似乎运行正确,每个容器都可以在不同的节点上到达另一个节点并检查它们,它们加入了入口网络和我创建的覆盖网络,正如预期的那样。当我尝试从服务公开端口之外访问时出现问题;它仅在我以容器运行的节点为目标时才有效,因此似乎路由网格无法正常工作。我在 docker 日志或系统日志中没有发现任何错误。

注意:我正在使用 docker 18.06.1-ce

小智 2

我遇到了这个问题并进行了以下更改:

  1. 我将我的wireguard 地址从10.0.*移至192.168.*(我有一种感觉,群正在在这些地址之上分配)。
  2. docker swarm init --advertise-addr 192.168.2.123与主节点的wireguard ip4地址。

这成功修复了它,并且在重新启动主节点和工作节点后它仍然有效!