Маршрутизация меша в режиме роя 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, и плохое поведение исчезло. Я предполагаю, что в конфигурации ядра есть что-то не то.