Как создать конечную точку для внешней службы, работающей на том же локальном узле вне кластера K8s? - PullRequest
0 голосов
/ 12 января 2020

Я использую Docker для Windows (docker -desktop), который поставляется с небольшим экземпляром kubernetes с одним узлом. У меня есть сценарий, в котором мои модули должны взаимодействовать с некоторыми внешними службами, работающими на том же локальном хосте (машина windwos 10), но за пределами кластера k8s.

Я знаю, что могу использовать kubernetes.docker.internal изнутри кластер, чтобы достичь моего node/localhost. Но, к сожалению, в модуле есть какая-то строка подключения по умолчанию в изображении, которую я не хочу менять - скажем, модули по умолчанию пытаются подключиться к строке DNS - «my-server». Поэтому в моем сценарии я хочу определить службу K8s с именем «my-server», которая имеет ссылку на конечную точку для kubernetes. docker .internal, чтобы прокси-сервер kube правильно перенаправил ее на мой localhost, который является моим windows 10 машин.

Возможно ли это как-нибудь? Я уже проверил это решение, но оно говорит о внешних службах, работающих на каком-то другом узле или облаке. Я также рассматриваю имя хоста локальной машины как ExternalName, но это не совсем надежно в разрешении DNS для моего сценария использования. Поэтому я действительно хочу использовать kubernetes.docker.internal в качестве конечной точки службы. Есть мысли?

1 Ответ

0 голосов
/ 17 января 2020

Я знаю, что могу использовать kubernetes.docker.internal из кластера, чтобы добраться до моего node/localhost.

Если вы уверены, что через него вы можете связаться с вашим windows аппаратом адрес, есть несколько решений.

Kubernetes позволяет изменять файл /etc/hosts в любом Pod. Я предполагаю, что kubernetes.docker.internal разрешает некоторые IP. Если вы знаете этот IP, вы можете добавить его в файл /etc/hosts, используемый контейнерами в Pod. Таким способом можно сопоставить любое доменное имя с этим IP-адресом. За подробностями обращайтесь к этой статье в документации kubernetes .


Если по какой-то причине IP-адрес не может быть использован в этом случае, есть еще одно решение , Вы можете изменить поведение по умолчанию вашего core-dns с помощью плагина rewrite. Это хорошо описано в этой статье.

...