Возможно ли, чтобы модуль, работающий в наборе данных, получил имя хоста всего модуля, работающего в другом наборе состояний?

У меня есть модуль, работающий в наборе с отслеживанием состояния, но ему необходимо знать имя хоста или адрес всех модулей, работающих в другом наборе с отслеживанием состояния, для связи с ними. Второй набор состояний создается отдельной диаграммой управления. Может ли модуль решить эту проблему динамически? Могу ли я ввести эту информацию в модуль через env, аналогичный настройке .Status.ip?

Изменить: каждый statefulSet имеет свой собственный безголовый сервис


person atlantis.pd    schedule 14.08.2020    source источник
comment
Не уверен, правильно ли я понял ваше требование, но: Вы пытались использовать службу для другого набора состояний? (kubernetes.io/docs/concepts/services-networking/service) Это даст вам статический домен в кластере для доступа ко всем этим модулям.   -  person David Losert    schedule 14.08.2020
comment
Если это диаграмма руля, она, скорее всего, уже создаст службу для этого набора состояний, но без знания того, какая диаграмма руля, это только предположение. Вы можете проверить с kubectl get service   -  person David Losert    schedule 14.08.2020
comment
Да, к обоим наборам с состоянием прикреплен безголовый сервис   -  person atlantis.pd    schedule 14.08.2020
comment
Есть ли способ внедрить полный статический домен в другой модуль через env?   -  person atlantis.pd    schedule 14.08.2020
comment
Да, конечно - просто используйте конфигурацию env в своей спецификации модуля (kubernetes.io/docs/tasks/inject-data-application/). DNS службы - это в основном ее имя, если оно находится в том же пространстве имен, или что-то вроде <my-service-name>.<namespace-name>.svc.cluster.local, если оно находится в другом пространстве имен.   -  person David Losert    schedule 14.08.2020
comment
@DavidLosert Всегда ли конец DNS будет svc.cluster.local? Я хочу, чтобы он мог работать динамически, если он работает в разных облачных сервисах K8S, и в каком случае я предполагаю, что у них есть собственная сеть обслуживания? Извините, если это покажется вам базовыми вопросами - в новинку   -  person atlantis.pd    schedule 15.08.2020
comment
Не извиняйтесь, это нормально задавать эти вопросы :) И что ж, не всегда так должно быть, по крайней мере, не cluster.local. Это так называемый кластерный домен, и его можно настроить. Однако, если вы не сделаете этого явно, это будет cluster.local (по умолчанию). Но для тех случаев, когда вам нужно выполнить развертывание в разных средах, где вам нужно иметь дело с небольшими различиями в конфигурации, я бы предложил динамически изменять их с помощью чего-то вроде Kustomize (kustomize.io) именно для этого.   -  person David Losert    schedule 15.08.2020
comment
@DavidLosert вы можете вставить свои комментарии в качестве ответа?   -  person Malgorzata    schedule 17.08.2020
comment
Конечно - просто добавил.   -  person David Losert    schedule 17.08.2020


Ответы (1)


Как обсуждалось в комментариях, здесь можно использовать ресурс-службу, поскольку это даст вам статический DNS в кластере для доступа ко всем модулям, на которые нацелена эта служба.

DNS для службы:

  • имя службы, если вы обращаетесь к ней из того же пространства имен
  • <my-service-name>.<namespace-name>.svc.cluster.local, если вы обращаетесь к нему из другого пространства имен, и где cluster.local - это домен кластера, который может отличаться от кластера к кластеру в зависимости от конфигурации кластеров.

Если вам нужны дополнительные параметры конфигурации, например если вы хотите развернуть диаграмму в различных облачных средах, где домен кластеров может фактически отличаться, вы можете использовать kustomize.io для настройки конфигурации во время применения.

person David Losert    schedule 17.08.2020