Как установить имя хоста модуля kubernetes на его IP-адрес?

Итак, у меня есть развертывание, которое создает N рабочих модулей, и сервис, который внутренне балансирует трафик к ним. Я получаю доступ к сервису с виртуальной машины. Виртуальная машина делает запрос, а модуль отвечает своим именем хоста, чтобы виртуальная машина могла установить с ней прямое соединение (это используется для извлечения результатов из модуля, который фактически выполнил работу).

Проблема, с которой я сталкиваюсь, заключается в том, что мой модуль возвращает имя хоста my-pod-5ff75ddd86-2xdjq, которое виртуальная машина не может разрешить. Мне интересно, можно ли установить имя хоста модуля на его IP-адрес, так как это будет означать, что мне не нужно менять какой-либо код в моем модуле или инструмент, работающий на моей виртуальной машине.


person Andy    schedule 30.07.2019    source источник


Ответы (2)


Если вы не хотите изменять свой код, вам нужно открыть внутренний kube-dns вашего кластера и сделать его DNS-сервером по умолчанию для вашей виртуальной машины.

По этому другому вопросу есть некоторая информация

Как предоставить службу kube-dns для запросов вне кластера?

В документации nginx-controller у вас есть хороший пример раскрытия порта 53 в UDP.

https://kubernetes.github.io/ingress-nginx/user-guide/exposed-tcp-udp-services/

Имея запущенный и работающий контроллер nginx, вы должны правильно создать вход, который будет использоваться этим контроллером, и просто добавить этот configMap:

apiVersion: v1
kind: ConfigMap
metadata:
  name: udp-services
  namespace: ingress-nginx
data:
  53: "kube-system/kube-dns:53"
person wolmi    schedule 30.07.2019

В зависимости от настройки вашего кластера ваша виртуальная машина, вероятно, не сможет подключиться к модулю даже с его IP-адресом. По умолчанию IP-адреса модулей находятся в оверлейной сети, которая доступна только внутри кластера.

Если виртуальная машина находится в кластере, уверены ли вы, что правильно ссылаетесь на имя хоста pod в DNS kube? Вот документы по DNS для модулей.

person switchboard.op    schedule 30.07.2019
comment
Tbh, у меня есть несколько вещей, которые обращаются к модулю, некоторые будут виртуальными машинами, некоторые будут основаны на кластере, некоторые могут быть другими, я пытаюсь понять, как просто сделать трафик на этот модуль доступным из любого места, а также как я вернуть имя хоста/IP, которое можно использовать где угодно. - person Andy; 30.07.2019