A Служба собирает набор модулей под общим именем (также предоставляя DNS-имя для простого поиска из других развертываний в том же кластере).Предполагаемое использование Сервиса состоит не в том, чтобы создать соединение между модулями внутри одной и той же службы, а для предоставления общего имени, которое направляет вызывающего абонента на любой модулей, поддерживающих Сервис.,Подумайте о веб-сервере, который должен масштабироваться при поступлении новых запросов, но вы не хотите постоянно обновлять информацию об IP.Просто найдите DNS и выберите один из IP-адресов, к которым разрешен поиск DNS, для простой случайной балансировки нагрузки.
Кажется, что вы пытаетесь просто общаться между двумя разными модулями по сети.В этом случае ваши модули должны быть автономными, и вам не нужна служба для разрешения их соответствующих IP-адресов для присоединения.
Разверните каждый из ваших модулей, предоставляя поля hostname
и subdomain
, чтобы обеспечитьправильная DNS-запись в кластере, например, так:
apiVersion: v1
kind: Pod
metadata:
name: alice
spec:
hostname: alice
subdomain: talk
containers:
- image: your-image:version
args: ["alice"]
name: main
---
apiVersion: v1
kind: Pod
metadata:
name: bob
spec:
hostname: bob
subdomain: talk
containers:
- image: your-image:version
args: ["bob"]
name: main
Теперь, если вы представляете себе запуск контейнера с аргументом командной строки "alice"
, как это делает первый Pod, вы можете легко подключиться к
bob.talks.default.svc.cluster.local
, который является полным доменным именем для второго модуля.То же самое и наоборот.Если вы хотите выставить определенные порты, сделайте это в спецификации Pod;прочитайте о портах именования для обеспечения портативности и независимости фактического номера порта при поиске его внутри кластера.
Несколько замечаний:
- конечно, вам нужно адаптировать
image
и args
для вашей фактической настройки контейнера - часть
default
в FQDN - это ваше пространство имен;все будет иначе, если вы не развернете в пространство имен по умолчанию - , поля
hostname
и subdomain
являются необязательными и имеют значения по умолчанию (см. ссылку на источник), но лучше явные, чем неявные
Документы Kubernetes на DNS для модулей: https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pods