Kubernetes NodeLocal DNSCache: ускоряем DNS-запросы 🚀
Без NodeLocal DNSCache DNS-запрос от Pod проходит через:
Service IP → kube-proxy → DNAT → conntrack → CoreDNS
В нагруженных кластерах это увеличивает задержки и создаёт дополнительную нагрузку на таблицу conntrack.
NodeLocal DNSCache запускает локальный DNS-кеш на каждой ноде как DaemonSet:
Pod → локальный DNS-кеш → CoreDNS
Если запись уже есть в кеше, Pod получает ответ прямо с текущей ноды. При промахе запрос передаётся в CoreDNS.
Преимущества
- быстрее обрабатываются повторные DNS-запросы;
- снижается нагрузка на CoreDNS;
- уменьшается межнодовый DNS-трафик;
- обходятся kube-proxy и DNAT;
- сокращается количество UDP-записей в conntrack;
- доступны DNS-метрики отдельно для каждой ноды.
NodeLocal DNSCache стабилен с Kubernetes 1.18, но обычно его нужно включать отдельно и развернуть node-local-dns как DaemonSet.
🔗 Официальная документация Kubernetes: https://kubernetes.io/docs/tasks/administer-cluster/nodelocaldns/
#kubernetes
📲 Подписывайся на канал 👉 @PRO100ITru
Post #700
19