Зачем использовать кастомные зоны в NodeLocal DNSCache?

NodeLocal DNSCache ускоряет DNS в Kubernetes за счёт локального CoreDNS на каждом узле. Пользовательские зоны позволяют:

  • Быстро резолвить внутренние или статические имена
  • Заменить внешние DNS-запросы локальными
  • Разделить внутренние и внешние зоны

Пошаговая инструкция

1. Получаем ConfigMap

kubectl -n kube-system get configmap node-local-dns -o yaml > node-local-dns.yaml

2. Добавляем зону в Corefile

В секции Corefile добавьте зону:

Corefile: |
  .:53 {
      errors
      cache {
        success 9984 30
        denial 9984 5
      }
      reload
      loop
      bind 169.254.20.10
      forward . /etc/resolv.conf
      prometheus :9253
      log
  }

  internal.zone.local:53 {
      hosts {
          10.10.10.10 service1.internal.zone.local
          10.10.10.11 service2.internal.zone.local
          fallthrough
      }
  }

Замените internal.zone.local на нужную вам зону.

3. Применяем изменения

kubectl apply -f node-local-dns.yaml

4. Перезапускаем DaemonSet

kubectl -n kube-system rollout restart daemonset node-local-dns

5. Проверяем

nslookup service1.internal.zone.local

Советы

  • Избегайте конфликта зон — NodeLocal не поддерживает все плагины CoreDNS.
  • При проблемах проверьте совместимость с DaemonSet’ом.

Заключение

Кастомные зоны в NodeLocal DNSCache дают больше контроля над именами в Kubernetes. Особенно полезно для гибридных и изолированных сред.

→ Узнать больше: