具有相同 CIDR 的 2 个服务
2 services with same CIDR
我在尝试将网络流量路由到 phpfpm 实例时遇到问题。定期地,当我重新启动我的 aws ec2 实例时,我会收到 502 'bad gateway' 错误,因为 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 地址都是唯一的(请注意,上面我说的是 service cidrs)
我只是想不通是什么导致这个 1 个特定容器无法从其他服务访问。
如果我重新启动问题容器,它会在之后工作。
有什么想法吗?
我实际上了解到这里的问题是我们通过 api 创建的服务规格不佳。可能还有另一个错误在起作用,但是如果您创建一个服务并且没有指定 EndpointSpec.Mode
属性,那么我们得到的服务会在 docker 守护程序重新启动时获得重复的 ip 地址.
我在尝试将网络流量路由到 phpfpm 实例时遇到问题。定期地,当我重新启动我的 aws ec2 实例时,我会收到 502 'bad gateway' 错误,因为 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 地址都是唯一的(请注意,上面我说的是 service cidrs)
我只是想不通是什么导致这个 1 个特定容器无法从其他服务访问。
如果我重新启动问题容器,它会在之后工作。
有什么想法吗?
我实际上了解到这里的问题是我们通过 api 创建的服务规格不佳。可能还有另一个错误在起作用,但是如果您创建一个服务并且没有指定 EndpointSpec.Mode
属性,那么我们得到的服务会在 docker 守护程序重新启动时获得重复的 ip 地址.