Назад | Перейти на главную страницу

Как мне указать VIP-адреса Docker?

Я могу перечислить все IP-адреса контейнера внутри оверлейной сети докеров, используя:

~# docker network inspect <network_id>

Я пытаюсь устранить неполадки резолвера в каком-то стеке Docker. Кажется, что разрешение выполняется на неправильный IP-адрес, но я хочу сначала проверить, разрешено ли оно до VIP. Я говорю о сети между контейнерами, а не о входной сети.

В своих поисках я нашел это Комментарий к проблеме Docker. Что предполагает следующее:

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

  1. tcpdump
  2. ipvsadm -> балансировщик нагрузки выполняется с помощью ipvs

Но я не могу найти ipvsadm варианты использования для печати VIP, используемых в моей сети докеров.

Вы можете найти VIP-адрес службы с помощью проверки самой службы (обычно я использую jq для форматирования вывода json):

docker service inspect --format '{{json .Endpoint.VirtualIPs}}' ${service_name} \
 | jq .

Чтобы перебрать все ваши сервисы, вы можете написать небольшой скрипт:

for service in $(docker service ls -q); do
  docker service inspect --format \
     '{{.Spec.Name}}: {{range .Endpoint.VirtualIPs}}{{.Addr}} {{end}}' \
     ${service}
done