Введение
Поскольку вы определили службу, которая маршрутизирует каждое развертывание, если вы развернули и службы, и развертывания в одном и том же пространстве имен, вы можете во многих современных кластерах kubernetes использовать kube-dns и просто ссылаться на службу по имени.
К сожалению, если kube-dns
не настроен в вашем кластере (хотя это маловероятно), вы не можете ссылаться на него по имени.
Подробнее о записях DNS для сервисов можно прочитать здесь
Кроме того, Kubernetes имеет функцию «Обнаружение служб», которая предоставляет порты и ips ваших служб в любой контейнер, развернутый в том же пространстве имен.
Решение
Это означает, что для достижения hello-def вы можете сделать это следующим образом
curl http://hello-def-service:${HELLO_DEF_SERVICE_PORT}
на основе обнаружения службы https://kubernetes.io/docs/concepts/services-networking/service/#environment-variables
Предостережение : вполне возможно, что в случае изменения порта службы новые переменные среды получат только модули, созданные после изменения в том же пространстве имен.
Внешний доступ
Кроме того, вы также можете подключиться к этой услуге извне, поскольку вы используете функцию NodePort, если ваш диапазон NodePort доступен извне.
Для этого вам потребуется доступ к сервису по node-ip: nodePort
Вы можете узнать NodePort, который был случайно назначен вашему сервису с помощью kubectl describe svc/hello-def-service
Ingress
Чтобы получить доступ к вашему сервису извне, вы должны внедрить входной сервис, такой как nginx-ingress
https://github.com/helm/charts/tree/master/stable/nginx-ingress
https://github.com/kubernetes/ingress-nginx
коляска
Если ваши 2 службы тесно связаны между собой, вы можете включить оба в один и тот же модуль, используя функцию Kubernetes Sidecar. В этом случае оба контейнера в модуле будут использовать один и тот же виртуальный сетевой адаптер и доступны через localhost:$port
https://kubernetes.io/docs/concepts/workloads/pods/pod/#uses-of-pods
Обнаружение службы
Когда Pod запускается на Node, kubelet добавляет набор окружения
переменные для каждого активного сервиса. Он поддерживает обе ссылки Docker
совместимые переменные (см. makeLinkVariables) и более простые
Переменные {SVCNAME} _SERVICE_HOST и {SVCNAME} _SERVICE_PORT, где
Имя службы в верхнем регистре, а тире преобразуются в подчеркивания.
Подробнее об обнаружении услуг читайте здесь:
https://kubernetes.io/docs/concepts/services-networking/service/#environment-variables