как я могу получить IP-адрес узлов и IP-адрес контейнера (работающих на узлах менеджера (ов) и рабочих узлов) из созданной службы? Я хотел бы проверить это для изучения циклической балансировки нагрузки двигателя роя докеров и разработать новую балансировку нагрузки.
Swarm: получить IP-адрес узла и IP-адрес контейнера из службы
Ответы (2)
Чтобы получить IP-адрес узла, вы можете использовать следующую команду:
docker node inspect self --format '{{ .Status.Addr }}'
Чтобы получить IP-адрес службы, просто добавьте идентификатор службы в конце, например:
docker node inspect self --format '{{ .Status.Addr }}' service-id
Чтобы получить IP-адрес контейнера, используйте:
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container-id
Я предполагаю, что вы имеете в виду получение всей этой информации на своем терминале с помощью команды docker для проверки интеграции с языком программирования docker- пи
Контейнеры
Чтобы получить информацию о менеджерах и работниках, вы можете использовать команду docker node:
docker node ls
Дает вам подробную информацию о каждом узле, например:
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
j74jxqb4wz38l2odl2seiiuzh * db-cluster-1 Ready Active Leader
Как видите, здесь также есть поле «Статус менеджера».
Узлы роя
docker service ps <SERVICE-NAME>
Дает вам список каждого сервисного узла, его идентификатор и статус, например:
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
ypd65x4i06nn db-cluster.1 severalnines/mariadb:latest db-cluster-1 Running Running 2 hours ago
278rdv7m4015 db-cluster.2 severalnines/mariadb:latest db-cluster-1 Running Running 2 hours ago
z9zr6xgnyuob db-cluster.3 severalnines/mariadb:latest db-cluster-1 Running Running 2 hours ago
затем вы можете использовать inspect для получения более подробной информации о любом объекте, например:
docker inspect ypd65x4i06nn
проверьте раздел NetworksAttachments, чтобы получить сведения о сети