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

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

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

2 ответа

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

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

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

В документации по контроллеру nginx у вас есть хороший пример демонстрации 53 порта по UDP

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

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

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

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

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

Другие вопросы по тегам