Могу ли я добавить псевдонимы имен служб в DNS K8s так же, как ссылки могут иметь псевдонимы в Docker?

В Docker контейнер клиента может ссылаться на контейнер сервера под разными именами, используя псевдонимы ссылок:

--link server-container:my_preferred_server

Второй клиент может использовать свой собственный выбор имен

-- link server-container:server

Могу ли я добиться этого в K8s, предпочтительно, добавляя различные записи в DNS K8s?

Обратите внимание, что решение, которое мы используем сейчас, заключается в том, чтобы контейнеры клиента не использовали жестко закодированное имя для контейнера сервера, а использовали значение переменной env SERVER_HOSTNAME='server-container' и ссылку без псевдонимов:

--link server_container

Изменить: Чтобы ответить на некоторые вопросы, полученные в ответах:
* существует более одного клиентского контейнера, иначе псевдонимы не будут иметь смысла. Каждый клиент знает сервер под другим именем
* клиент и сервер не в одном модуле

2 ответа

У меня была такая же потребность, и я смог добавить внешнюю службу, которая указывает на полное доменное имя другой службы в кластере:

      apiVersion: v1
kind: Service
metadata:
  name: "my-alias"
spec:
  type: ExternalName
  externalName: "other-service.my-namespace.svc.cluster.local"

Теперь я могу получить доступ other-service в виде my-alias из кластера и пространства имен.

Есть несколько способов добиться этого.

  • Вы можете просто создать Службу для контейнера сервера (в своем собственном модуле), если модуль находится в том же кластере Kubernetes, то подойдет обычная служба, если контейнер сервера находится за пределами Kubernetes, вы можете создать службу с помощью ExternalIPs определить IP-адреса конечных точек

  • Если это параллельное развертывание (т. Е. 1 клиент <-> 1 сервер), вы можете оставить клиент и сервер в одном и том же определении модуля: в одном модуле клиентский контейнер может достигать контейнера сервера через localhost на его конкретный порт.

  • Вы можете поиграть с kube-dns, чтобы ввести произвольные имена DNS (или даже перезаписать общедоступные), но вам действительно не нужно этого делать.

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