与Rancher跨容器/主机通信

我正在与Consul,Rancher和Docker进行实验。

所以我有这个REST服务在4个不同的主机上运行。 这个服务的每个实例都使用容器链接注册到一个Consul容器中。 也就是说,所有的实例都知道Consul容器。

这工作正常。

什么不工作正常的时候,领事试图对我的服务进行健康检查。 如果服务的一个实例与consul容器在同一个主机上运行,​​那么就可以工作。 但是运行在不同主机上的任何实例都将失败。 地址unrachable。

我试图以几种不同的方式提取服务实例容器IP。 1)列出容器内所有可用的notwork接口和ip。 2)容器内的“hostname -i”。

他们都是知识产权。 例如: 172.16.0.06 Rancher在同一个容器中列出IP地址如10.43.100.24

我的猜测是Consul应该对Rancher显示的IP执行健康检查,而不是在容器内提取的IP。

我在这里有点失落,我的服务应该如何find它应该使用在领事内部注册的IP?

(我知道这不是真的如何使用领事,但问题是容器在一个主机上不能到达另一个主机上的容器..所以领事部分只是把上下文我所尝试的)

docker发布的IP地址在集群中并不是唯一的。 因此Rancher使用10.42.0.0/16子网给出唯一的IP地址。

您可以使用此命令findRancher IP地址

 ip addr 

如果您可以configuration您的应用程序使用Rancher IP地址,您将能够跨主机进行通信。

有关Rancher内部联网的详细信息,请查看此页面: http : //rancher.com/day-life-packet-inside-rancher/

疑难解答指南: http //docs.rancher.com/rancher/v1.2/en/faqs/troubleshooting/#cross-host-communication

我已经标记@ leodotcloud的答案是正确的,因为它提供了正确的IP,如果你抛出一些parsing魔术。

尽pipeRancher Froums有一个更直接的答案。 https://forums.rancher.com/t/how-to-get-rancher-virtual-ip-from-within-a-container/3668

你可以调用这个URI来获取地址: http://rancher-metadata/2015-12-19/self/container/primary_ip