Получить полное имя службы в Kubernetes

По умолчанию, согласно документации k8s, службам назначается запись DNS A. для имени формы my-svc.my-namespace.svc.cluster-domain.example.

Есть ли команда для получения полного имени службы?


person Juliano Costa    schedule 02.01.2020    source источник
comment
имя службы nslookup даст вам это   -  person Tushar Mahajan    schedule 02.01.2020


Ответы (1)


Вы можете сделать DNS-запрос из любого модуля и получить полное доменное имя.

# nslookup api-server
Server:     10.96.0.10
Address:    10.96.0.10#53

Name:   api-server.default.svc.cluster.local
Address: 10.104.225.18

root@api-server-6ff8c8b9c-6pgkb:/#

cluster-domain.example — это просто пример в документации. cluster.local — назначенный по умолчанию домен кластера. Таким образом, полное доменное имя любой службы по умолчанию будет <service-name>.<namespace>.svc.cluster.local.

Вам не нужно использовать полное доменное имя для доступа к службам — для служб в том же пространстве имен будет достаточно только имени службы. Для сервисов в других пространствах имен будет достаточно <service-name>.<namespace>, так как kubernetes автоматически настроит поисковые домены DNS.

person Shashank V    schedule 02.01.2020
comment
Допустим, у меня есть служба db-service, работающая в -n dev и -n prod. Я знаю, что полное доменное имя будет db-service.dev.svc.cluster.local и db-service.prod.svc.cluster.local соответственно, но как мне использовать nslookup в этом сценарии? - person Juliano Costa; 02.01.2020
comment
Вам нужно знать хотя бы пространство имен. Вы можете сделать nslookup db-service.dev или nslookup db-service.prod - person Shashank V; 02.01.2020
comment
Я думаю, что делаю что-то не так, потому что единственный результат, который я могу получить, это: ** server can't find xxx: NXDOMAIN, где xxx - это имя службы. - person Juliano Costa; 02.01.2020
comment
Где вы запускаете команду nslookup? Вы должны запускать его внутри контейнера в модуле. - person Shashank V; 02.01.2020
comment
Сработало, спасибо @aviator.master $ kubectl exec -it redis -- nslookup redis-service.default nslookup: can't resolve '(null)': Name does not resolve Name: redis-service.default Address 1: 10.107.229.159 redis-service.default.svc.cluster.local - person Juliano Costa; 02.01.2020