Могу ли я добавить псевдонимы имен служб в 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 (или даже перезаписать общедоступные), но вам действительно не нужно этого делать.