1. Проверка DNS (netshoot)

Запустите утилиту netshoot в той же сети, где находится проблемный сервис.

docker service create --name debug --network my-net --mode global nicolaka/netshoot sleep infinity

Зайдите в контейнер:

# Найдите ID контейнера на текущей ноде
 
> **TL;DR:** Overlay не работает? Проверь: порты 7946+4789 открыты, ноды видят друг друга,
> `docker network inspect` показывает peers. Netshoot для глубокой диагностики.
docker ps | grep debug
docker exec -it <container-id> zsh

Внутри проверьте резолвинг имени сервиса:

nslookup my-web-service
dig my-web-service

2. Проверка портов

Проверьте, открыты ли необходимые порты между нодами (Firewall):

  • TCP/2377: Cluster Management
  • TCP/UDP/7946: Communication among nodes
  • UDP/4789: Overlay Network Traffic (VXLAN)

Если 4789 закрыт, сервисы будут создаваться, но ping между ними ходить не будет.

Типичные ошибки

ОшибкаСимптомРешение
Файрвол блокирует VXLAN (UDP 4789)Контейнеры на разных нодах не видят друг другаОткрыть TCP/UDP 7946 + UDP 4789 между всеми нодами
DNS не резолвитсяCould not resolve host: myserviceПроверить: сервис в той же overlay-сети? docker service inspect
VIP не отвечаетСервис healthy, но трафик не идётПроверить docker network inspect → IPAM, Peers. Перезапустить ingress
Netshoot не подключается к overlaycould not attach to networkOverlay должна быть --attachable для standalone контейнеров