Некоторые пояснения (не совсем ответ)
В kubernetes каждому модулю назначается IP-адрес, а каждому контейнеру в модуле назначается тот же IP-адрес. Таким образом, как сказал Алекс Робинсон в своем ответе , вы можете просто использовать hostname -i
внутри своего контейнера, чтобы получить IP-адрес модуля.
Я тестировал модуль с двумя тупыми контейнерами и действительно hostname -i
выводил один и тот же IP-адрес внутри обоих контейнеров. Кроме того, этот IP был эквивалентен IP, полученному с использованием kubectl describe pod
извне, что подтверждает все ИМО.
Однако ответ PiersyP кажется мне более чистым.
Источники
Из документации kubernetes :
Все приложения в модуле используют одно и то же сетевое пространство имен (одинаковый IP-адрес и пространство портов) и, таким образом, могут «находить» друг друга и обмениваться данными с помощью localhost. Из-за этого приложения в модуле должны координировать использование портов. У каждого модуля есть IP-адрес в плоском общем сетевом пространстве, которое имеет полную связь с другими физическими компьютерами и модулями в сети.
Еще один фрагмент из документации kubernetes :
До сих пор в этом документе говорилось о контейнерах. На самом деле Kubernetes применяет IP-адреса в области пода - контейнеры внутри пода совместно используют свои сетевые пространства имен, включая свой IP-адрес. Это означает, что все контейнеры внутри модуля могут достигать портов друг друга на локальном хосте.
printenv | grep '10.254.24.167'
что не возвращает ничего, кроме пользовательской переменной MY_POD_IP. В любом случае, примите мой голос, сэр :)