Не удалось получить доступ к службам в Docker swarm

Я новичок в докере, и в последнее время я следил за курсом Найджела Поултона от PluralSight. Теперь я начал следовать видеоуроку по режиму роя и сделал именно то, что было сказано в видео.

У меня запущено 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

теперь, когда я беру общедоступный DNS моей машины 1 и ввожу http://ec2-3-89-157-63.compute-1.amazonaws.com:8080, я получаю сообщение об ошибке, говорящее о том, что сайт недоступен.

Однако вместо использования службы докеров, если бы я использовал команду:

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

Затем, когда я перехожу к http://ec2-3-89-157-63.compute-1.amazonaws.com:8080, он работает отлично.

Я вижу, что в github есть открытая проблема, что-то похожее на это. Это из-за той же проблемы в докере 18.09.9 или я что-то упустил?


person Sulove Bista    schedule 05.04.2020    source источник


Ответы (1)


Вы создали оверлейную сеть и развернули службу в этой сети.

Что-то вроде docker network create -d my-net для создания наложения.

Затем docker service create --network my-net ... развернуть службу в оверлее.

Я ломаю голову, так как это было давно, но оверлейная сеть может быть жизненно важна для сетки маршрутизации, которая делает сервис доступным через любой узел.

Я думаю, что вы можете столкнуться с узлом в кластере, у которого нет реплики службы.

Другим способом тестирования было бы развертывание с большим количеством реплик, чем узлов. Это должно обеспечить по крайней мере один на каждом узле.

В качестве альтернативы разверните одну реплику, выясните, на каком узле она работает, подключитесь к этому узлу (браузеру или завитку), а затем снова попробуйте подключиться к узлу, на котором не работает реплика.

ХТН. Также пинговал вас в Твиттере.

@nigelpoulton

person Nigel Poulton    schedule 05.04.2020