curl из докера на узле кластера в главный узел

У меня есть кластер с одним главным узлом и 3 вычислительными узлами. Докер-контейнер на узлах 1 и 2 может «закручиваться» к главному узлу. Однако узел-3 завершается с ошибкой «Отказано в соединении».

  • пинг из контейнера работает
  • ping и curl с хоста контейнера работают (т.е. узел-3 для мастера)
  • отключение docker0 работало для узла 1 и 2. не для узла 3 (https://serverfault.com/questions/642981/docker-containers-cant-resolve-dns-on-ubuntu-14-04-desktop-host)
  • не помогло: setsebool -P httpd_can_network_connect on
  • firewalld неактивен на других узлах, поэтому попытался отключить его и на узле-3.

что еще я могу искать?

ОБНОВИТЬ

спасибо @ sxm1972, нашел эту, возможно, нежелательную запись в списке «docker network ls»

f49b6c9541d2 docker_gwbridge локальный мост

как мне избавиться от этого?

удалил его, используя: docker network rm f49b6c9541d2 sudo service перезапуск докера

но это не решило проблему завитка

ОБНОВИТЬ

Затем посмотрел /etc/hosts node3 содержит неожиданную строку:

192.168.1.1     079543e73dc7

вместо этого другие узлы имеют IP-адрес, например 172.17.0.x.

192.168.1.1 относится к IP-адресу главного узла.

ОБНОВИТЬ

ifconfig на узлах node1 и node2 показывает 172.17.0.x для интерфейса docker0

ifconfig на node3 показывает 192.168.xx: это кажется поврежденным.

Возможно, я непреднамеренно сделал что-то с IP-адресом node3. Как я могу восстановить его?

ОБНОВИТЬ

Пытался

ip link del docker0
sudo service docker restart

host docker0 IP по-прежнему кажется неправильным

РЕШЕНИЕ

Спасибо @sxm1972! сработало следующее:

sudo service docker stop
create/edit daemon.json from the link below setting bip to 172.17.0.1/16
ip link del docker0
sudo service docker restart

https://success.docker.com/article/How_do_I_configure_the_default_bridge_(docker0)_network_for_Docker_Engine_to_a_Different_subnet

Теперь я могу "скручиваться" из контейнера


person Tims    schedule 08.02.2018    source источник


Ответы (1)


person    schedule
comment
@ Тимс, см. ответ выше. - person sxm1972; 10.02.2018
comment
Я вижу лишний docker_gwbridge... как его удалить? - person Tims; 12.02.2018
comment
@ Тимс, ты, вероятно, не хочешь удалять docker_gwbridge сеть. Вот хорошее объяснение сети докеров neuvector.com/blog/docker-swarm-container -сети - person sxm1972; 12.02.2018
comment
3 узла идентичны, а другие 2 узла не имеют gwbridge, что заставило меня удалить эту запись моста. вреда пока нет. но я вижу что-то необычное в /etc/hosts. обновил исходный пост выше. Благодарность - person Tims; 12.02.2018
comment
В команде curl вы используете IP-адрес мастер-узла или имя хоста? Если вы используете имя хоста, а система зависит от того, разрешается ли имя хоста через файл hosts, вы должны сделать запись в файле hosts, которая сопоставляет IP-адрес главного узла (172.17.0.x? ) на имя главной машины. Можете ли вы опубликовать вывод ваших команд docker network ls и docker network inspect? - person sxm1972; 12.02.2018
comment
использую IP-адрес. похоже, это проблема с конфигурацией сети хоста. Я обновил сообщение выше. Есть ли способ восстановить его? - person Tims; 12.02.2018
comment
Удалите мост docker0 следующими командами по порядку: service docker stop, ip link del docker0, service docker start. При перезапуске демона docker сеть docker0 по умолчанию должна быть воссоздана заново. superuser.com/questions/995373/remove-docker0-bridge - person sxm1972; 12.02.2018
comment
попытался остановить службу перед удалением моста, как было предложено. IP-адрес docker0 на хосте возвращается к 192.168.x.x. - person Tims; 12.02.2018
comment
Давайте продолжим обсуждение в чате. - person sxm1972; 12.02.2018