无法访问Docker群中的服务

我对docker并不陌生,我最近一直在PluralSight上学习Nigel Poulton的课程。现在,我开始按照群体模式观看视频教程,并在视频中进行了准确说明。

我有6个EC2实例正在运行。我登录到每个服务器并安装了一个泊坞窗。每台计算机上的引擎版本均为18.09.9。现在,我使用以下命令从机器1初始化了群模式:

sudo docker swarm init --advertise-addr 172.31.41.99:2377 --listen-addr 172.31.41.99:2377

然后我获得了用于工作人员和管理人员的令牌,并登录到其他计算机,最后创建了3个管理人员和3个工作人员。

这是我节点的最终外观:

ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
sbh3v850ko7h8f279366fxlt9 *   ip-172-31-41-99     Ready               active              Leader              18.09.9
f7kqsy3yano3vxo8451mi9z7o     ip-172-31-83-172    Ready               active              Reachable           18.09.9
jb0innx7l4q56kq4dk9phginw     ip-172-31-90-8      Ready               active                                  18.09.9
xr3oz2x1wyl3a0bd83i3atjk4     ip-172-31-91-47     Ready               active                                  18.09.9
ttug67rbhfai88wq2sbulo8dm     ip-172-31-94-197    Ready               active              Reachable           18.09.9
kkun5zo93zxg4jksryvbeh3mt     ip-172-31-94-220    Ready               active                                  18.09.9

然后我使用以下命令创建了服务:

sudo docker service create --name psight1 -p 8080:8080 --replicas 5 nigelpoulton/pluralsight-docker-ci

现在,当我拿起机器1的公共DNS并输入http://ec2-3-89-157-63.compute-1.amazonaws.com:8080时,我收到一条错误消息,指出无法访问该站点。

但是,如果要使用以下命令,请不要使用docker服务:

docker run -d --name web -p 8080:8080 nigelpoulton/pluralsight-docker-ci

然后,当我进入http://ec2-3-89-157-63.compute-1.amazonaws.com:8080时,它运行完美。

我看到有一个open issue ongoing in github与此类似。是因为docker 18.09.9中的同一问题还是我错过了什么?

sayalin 回答:无法访问Docker群中的服务

您是否已创建覆盖网络并将服务部署到该网络。

类似于docker network create -d my-net来创建叠加层。

然后docker service create --network my-net ...将该服务部署到覆盖上。

很久以来,我一直在抓挠头,但是覆盖网络对于通过任何节点提供服务的路由网格来说至关重要。

我在想的是,您可能会碰到群集中没有服务副本的节点。

另一种测试方法是部署比节点更多的副本。这应该确保每个节点上至少有一个。

或者,部署单个副本,找出它在哪个节点上运行,连接到该节点(浏览器或curl),然后再次尝试击中未运行该副本的节点。

HTH。还可以在Twitter上对您执行ping操作。

@nigelpoulton

本文链接:https://www.f2er.com/2509761.html

大家都在问