Back to questions
Senior
1
Как осуществляется резолв DNS в Kubernetes? Расскажи про FQDN и цепочку DNS-резолва.
Companies where asked
Flant
Answer from AI
sobes.tech AI
В Kubernetes DNS-резолв происходит через встроенный DNS-сервис (обычно CoreDNS), который отвечает за разрешение имён сервисов и подов внутри кластера.
FQDN в Kubernetes
Полное доменное имя (FQDN) для сервиса в Kubernetes строится по шаблону:
<service>.<namespace>.svc.<cluster-domain>
<service>— имя сервиса<namespace>— namespace, в котором находится сервисsvc— фиксированная часть, указывающая на сервис<cluster-domain>— домен кластера, по умолчаниюcluster.local
Например, сервис my-service в namespace default будет иметь FQDN my-service.default.svc.cluster.local.
Цепочка DNS-резолва
- Pod отправляет DNS-запрос на DNS-сервер, указанный в
/etc/resolv.conf(обычно это CoreDNS). - CoreDNS проверяет локальные записи для сервисов и подов Kubernetes.
- Если имя — короткое (например,
my-service), резолв происходит с добавлением search domains из/etc/resolv.conf, например,my-service.default.svc.cluster.local. - Если имя — FQDN, CoreDNS пытается разрешить его напрямую.
- Если CoreDNS не может разрешить имя, запрос передаётся на внешний DNS (например, Google DNS).
Таким образом, DNS в Kubernetes позволяет подам обращаться к сервисам по коротким именам, а при необходимости использовать полные доменные имена для точного указания.
Пример /etc/resolv.conf в поде:
search default.svc.cluster.local svc.cluster.local cluster.local
nameserver 10.96.0.10
options ndots:5
Здесь 10.96.0.10 — IP CoreDNS, а ndots:5 означает, что имена с менее чем 5 точками считаются неполными и к ним добавляются search domains.