0

我用 3 台 ubuntu 16.04 机器和 vagrant 设置了 docker swarm 模式。我认为网状路由根本不起作用。

如果我设置一个服务

docker service create --name helloworld --replicas 1 -p 8888:80 nginx

我可以看到我的服务

docker service ls
ID            NAME        REPLICAS  IMAGE  COMMAND
evbp2spkjn50  helloworld  1/1       nginx 

我可以 curl 到运行实际容器的机器的 ip:

curl 172.28.100.101:8888
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
....

但是如果我去集群中的任何其他机器,我没有正确路由:

curl 172.28.100.102:8888
curl: (7) Failed to connect to 172.28.100.102 port 8888: Connection refused

现在,如果我扩展服务以使容器在所有机器上运行,如下所示:

docker service scale helloworld=3
helloworld scaled to 3

突然之间,我可以蜷缩起来。

curl 172.28.100.102:8888
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
....

这些机器之间的所有端口都是开放的(它们是vm.network :private_network, :ip => "172.28.100.10X", :netmask => "255.255.0.0"在 vagrant 中设置的)。

我已经在没有任何变化的专用网络上进行了尝试。

docker --version
Docker version 1.12.1, build 23cf638
4

2 回答 2

1

github 上有一个未解决的问题,可能与您所看到的有关。我认为仍然存在一些边缘情况,即网格路由无法正常工作,并且在我自己的 1.12 测试中已经看到了这一点。

于 2016-09-06T01:58:18.700 回答
0

我从 Ubuntu 切换到 RancherOS,不良行为消失了。我猜内核配置有些不对劲。

于 2016-09-05T20:18:09.360 回答