DC / OS虚拟网络无法跨代理

时间:2017-02-09 21:35:07

标签: dcos

我已经成功创建了主机和桥接模式马拉松应用程序而没有问题,并使用l4lb和marathon-lb来托管它们。这一切都没有问题。

我现在尝试使用USER模式网络,使用默认的" dcos" 9.0.0.0/8网络。在此模式下,我的应用只能与同一代理上的其他容器通信。主机操作系统只能与自己托管的容器通信。似乎节点不能在虚拟网络上相互之间路由流量。

为了测试,我使用了码头工具" nginx:alpine"容器,有2个实例,在不同的主机上。他们的IP分别是9.0.6.130和9.0.3.130。没有L4LB或Marathon-LB配置,没有服务端点,主机网络上没有暴露的端口。基本上是:

"container": {
    "docker": {
      "image": "nginx:alpine",
      "forcePullImage": false,
      "privileged": false,
      "network": "USER"
    }
  },
  "labels": null,
  "ipAddress": {
    "networkName": "dcos"
  },
}

在其中一个的shell中,我有:

/ # ip addr list | grep 'inet 9'
inet 9.0.6.130/25 scope global eth0

/ # nc -vz 9.0.6.130:80
9.0.6.130:80 (9.0.6.130:80) open

/ # nc -vz 9.0.3.130:80
nc: 9.0.3.130:80 (9.0.3.130:80): Operation timed out

/ # traceroute to 9.0.3.130 (9.0.3.130), 30 hops max, 46 byte packets
traceroute to 9.0.3.130 (9.0.3.130), 30 hops max, 46 byte packets
 1  9.0.6.129 (9.0.6.129)  0.006 ms  0.002 ms  0.001 ms
 2  44.128.0.4 (44.128.0.4)  0.287 ms  0.272 ms  0.100 ms
 3  *  *  *
 4  *  *  *

从另一方面来说:

/ # ip addr list | grep 'inet 9'
inet 9.0.3.130/25 scope global eth0
/ # nc -vz 9.0.3.130:80
9.0.3.130:80 (9.0.3.130:80) open
/ # nc -vz 9.0.6.130:80
/ # traceroute 9.0.6.130
traceroute to 9.0.6.130 (9.0.6.130), 30 hops max, 46 byte packets
 1  9.0.3.129 (9.0.3.129)  0.005 ms  0.003 ms  0.001 ms
 2  44.128.0.7 (44.128.0.7)  0.299 ms  0.241 ms  0.098 ms
 3  *  *  *
 4  *  *  *

有趣的是,我可以ping我认为应该是下一个(虚拟)跳,以及所有中间跳,尽管traceroute没有显示它。唯一没有ping的是终端容器的虚拟IP。 (这些来自其中一个容器)

64 bytes from 44.128.0.7: seq=0 ttl=63 time=0.269 ms
64 bytes from 44.128.0.4: seq=0 ttl=64 time=0.094 ms
64 bytes from 9.0.3.129: seq=0 ttl=64 time=0.072 ms
64 bytes from 9.0.6.129: seq=0 ttl=63 time=0.399 ms
PING 9.0.6.130 (9.0.6.130): 56 data bytes (no response)

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

在DC / OS社区邮件列表的帮助下计算出来。

RHEL7默认安装firewalld,DC / OS需要禁用。我已经这样做了,但是在重新启动节点之前,仍然将FORWARD策略保留为DROP。 DC / OS的防火墙操作仅更改规则,而不是默认策略。

这解决了它:

iptables -P FORWARD ACCEPT

除非在某处指定(例如firewalld),否则无论如何都是重启的默认设置,因此它应该在重新启动后保持不进行任何进一步操作。