CoreDNS

Тема дорожной карты · Kubernetes

DNS в Kubernetes обеспечивается CoreDNS — гибким DNS-сервером на основе плагинов, развёрнутым как Deployment в пространстве имён kube-system, который автоматически регистрирует каждый Service и Pod в кластере под предсказуемым DNS-именем. Каждый Service Kubernetes получает A/AAAA-запись вида <service>.<namespace>.svc.cluster.local, а headless-сервисы (с clusterIP: None) возвращают отдельные IP-адреса Pod'ов, позволяя адресовать членов StatefulSet — например узлы баз данных — по имени. CoreDNS настраивается через ConfigMap с именем coredns в kube-system с помощью Corefile, объединяющего плагины: kubernetes (для внутрикластерного DNS), forward (для upstream-разрешения), cache и опционально rewrite для создания пользовательских DNS-псевдонимов. Отладка DNS-проблем в K8s обычно включает kubectl exec в Pod с запуском nslookup <service>.<namespace> или dig против ClusterIP CoreDNS для проверки разрешения имён, а также просмотр логов CoreDNS через kubectl logs -n kube-system -l k8s-app=kube-dns.

Как это работает

CoreDNS в Kubernetes работает через CNI (Container Network Interface) на каждой ноде плюс API-ресурсы (Service, Ingress, NetworkPolicy и т.д.), которые декларирует пользователь. CNI выдаёт pod IPs из cluster-wide CIDR, kube-proxy программирует правила iptables/IPVS для Service ClusterIP, ingress-controller (NGINX, Traefik и др.) обрабатывает внешний HTTP-трафик с TLS termination.

Когда применять

Конфигурируйте CoreDNS рано в setup кластера — сетевые решения имеют широкие последствия и сложно меняются позже. Выбирайте CNI (Calico, Cilium, Flannel) по нуждам policy и масштаба; выбирайте ingress controller под мешок нагрузок; проектируйте Service и DNS-разметку до деплоя реальных нагрузок. Network observability (kube-state-metrics + Prometheus + Cilium Hubble) экономит часы во время incident response.

Типичные ошибки

Сетевые ловушки: дефолт на NodePort (открывает порты на каждом worker — обычно не то, что вам нужно), когда имели в виду ClusterIP + Ingress; забыли NetworkPolicies (всё общается со всем по умолчанию в K8s — опасно в shared-кластерах); ingress controllers без TLS-стратегии; неправильная конфигурация CoreDNS, вызывающая cluster-wide DNS-failures. Тестируйте network policies на staging до production.

Связанные понятия

Полезные ресурсы