Маршрутизация меша в режиме роя Docker вообще не работает

У меня есть режим docker swarm, настроенный на 3 компьютерах с Ubuntu 16.04 с vagrant. Я не думаю, что сетчатая маршрутизация работает вообще.

Если я настрою службу как

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

Я могу видеть мой сервис с

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

Я могу свернуться на 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" в бродяге).

Я пробовал это с выделенной сетью без изменений.

docker --version
Docker version 1.12.1, build 23cf638

2 ответа

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

Я переключился с Ubuntu на RancherOS, и плохое поведение исчезло. Я предполагаю, что в конфигурации ядра есть что-то не то.

Другие вопросы по тегам