2个具有相同CIDR的服务

时间:2017-12-02 00:27:36

标签: docker docker-networking

我有一个问题,我正在尝试将网络流量路由到phpfpm实例。定期,当我重新启动我的aws ec2实例时,我得到502'坏网关'错误,因为phpfpm容器没有从Web服务容器响应。

我可以跳进php容器没问题,一切看起来都不错,但不知何故我做不到telnet phpcontainer 9000 - 它说连接无法建立。它似乎是将服务名称的ip解析为服务网关ok。 php服务只有1个副本,但Web服务有2个副本(全局复制)。

然后我开始检查服务和容器的所有IP地址。

我注意到有2个服务具有相同的cidr(有问题的服务):

docker service inspect webservice | grep Addr
                    "Addr": "10.255.0.4/16"
                    "Addr": "172.20.0.2/16"
docker service inspect phpservice23 | grep Addr
                    "Addr": "172.20.0.2/16"

这是正常的吗?

虽然所有的IP地址都是独一无二的(注意上面我说的是服务cidrs

我无法弄清楚导致这个特定容器无法从其他服务访问的原因。

如果我重新启动问题容器,它将在此之后工作。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我实际上已经知道这里的问题是我们通过api创建了一个带有错误规范的服务。可能还有另一个错误,但是如果你创建了一个服务而没有指定EndpointSpec.Mode属性,那么当重启docker守护进程时,我们得到的服务会获得重复的ip地址。