Контейнеры в Docker Swarm не могут общаться друг с другом - PullRequest
0 голосов
/ 09 мая 2018

У меня есть три разных узла со следующими характеристиками:

Все объединились в рой с хостом A в качестве менеджера Узел C размещен на географически другом сервере другим провайдером, но не должен иметь значения , поскольку я использую общедоступные IP-адреса только для таких вещей, как --advertise-addr.

.

Я убедился, что все порты, необходимые для роя связи , открыты на всех узлах. Особенно говорят, что порт 7946 необходим для связи между контейнерами. Использование netcat Я могу отправлять и получать пакеты TCP и UDP между всеми тремя узлами, а также из тестового контейнера в каждом из узлов на каждый другой узел.

Проверка сети на любом узле показывает мне тот же результат: все три узла перечислены. Так что Docker Swarm, похоже, знает о своих пирах на любом узле.

Теперь вот проблема:

  • Контейнеры, размещенные на узлах A + B, могут без проблем достигать друг друга через оверлейную сеть
  • Контейнеры, размещенные на A + C или B + C, могут не связываться. Соединения только время ожидания.

Я не могу найти какой-либо очевидной разницы между узлами, кроме операционной системы и версии докера. Глядя на связанный образ серверов Ubuntu, я увидел, что установлено несколько инструментов, таких как pipework, но я не настраивал и не использовал его. Или Docker Swarm использует его неявно?

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

Ответы [ 2 ]

0 голосов
/ 01 июня 2018

Через некоторое время я обнаружил причину: «недоступный» сервер (хотя он и мог присоединиться к рою) использовал драйвер виртуального сетевого адаптера e1000. После изменения на virtio все работает как шарм.

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

0 голосов
/ 09 мая 2018

Проверьте настройки брандмауэра. Они имеют тенденцию часто ломать набор «сетей» докеров.

Убедитесь, что сетевой интерфейс docker0 может подключаться к сети для входящего и исходящего трафика.

...