Я могу перечислить все IP-адреса контейнера внутри оверлейной сети докеров, используя:
~# docker network inspect <network_id>
Я пытаюсь устранить неполадки резолвера в каком-то стеке Docker. Кажется, что разрешение выполняется на неправильный IP-адрес, но я хочу сначала проверить, разрешено ли оно до VIP. Я говорю о сети между контейнерами, а не о входной сети.
В своих поисках я нашел это Комментарий к проблеме Docker. Что предполагает следующее:
С точки зрения отладки используются следующие инструменты:
- tcpdump
- 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