Разрешение DNS в службе Azure Kubernetes (AKS)

Разрешение системы доменных имен (DNS) является критически важным компонентом в службе Azure Kubernetes (AKS), что позволяет модулям pod и службам обмениваться данными с помощью пользовательских имен вместо IP-адресов. AKS предоставляет встроенные службы DNS, чтобы обеспечить простое разрешение имен как для внутренних ресурсов кластера, так и для внешних конечных точек. Понимание работы DNS в AKS помогает операторам кластера и разработчикам обеспечить надежное подключение, оптимизировать производительность и эффективно устранять проблемы с сетью.

CoreDNS в службе Azure Kubernetes

CoreDNS — это служба DNS по умолчанию в службе Azure Kubernetes (AKS), обеспечивающая внутреннее разрешение имен и обнаружение служб для рабочих нагрузок, работающих в кластере. Он работает как набор модулей pod в пространстве имен kube-system и тесно интегрирован с сетью Kubernetes.

Когда pod в AKS делает DNS-запрос, например определение имени другой службы, запрос направляется к pod CoreDNS. Эти модули pod обрабатывают запрос и возвращают соответствующий IP-адрес или пересылают запрос на вышестоящий DNS-сервер для внешних доменов.

Эта архитектура обеспечивает баланс между гибкостью и операционной безопасностью в управляемой среде. Дополнительные сведения о настройке CoreDNS в AKS см. в руководстве по настройке CoreDNS.

Сведения о проекте CoreDNS см. на странице вышестоящего проекта CoreDNS.

LocalDNS в службе Azure Kubernetes

Замечание

В этом документе представлен обзор того, что такое LocalDNS, и его преимущества в AKS. Он не содержит инструкции по настройке. Инструкции по включению и настройке LocalDNS см. в руководстве по localDNS.

Обзор

LocalDNS — это расширенная функция в службе Azure Kubernetes (AKS), которая развертывает прокси-сервер системы доменных имен (DNS) на каждом узле для обеспечения высокой устойчивости, низкой задержки разрешения DNS. Обрабатывая DNS-запросы локально, этот прокси-сервер уменьшает трафик к модулям надстроек CoreDNS, повышая общую надежность и производительность DNS в кластере. LocalDNS особенно полезен в больших кластерах или средах с высоким объемом запросов DNS, где централизованное разрешение DNS может стать узким местом.

При включении LocalDNS AKS развертывает локальный systemd кэш DNS в качестве службы на каждом узле. Pod на узле отправляют DNS-запросы в этот локальный кэш, что позволяет ускорить разрешение, снижая количество сетевых прыжков. Этот подход также сводит к минимуму conntrack использование таблиц, что снижает риск исчерпания таблицы. Кроме того, если вышестоящий DNS становится недоступным, LocalDNS может продолжать обслуживать кэшированные ответы в течение настраиваемой длительности, помогая поддерживать подключение pod и надежность службы.

Схема, демонстрирующая архитектуру LocalDNS.

Ключевые возможности

  • Сокращение задержки разрешения DNS: Каждый узел AKS запускает службу LocalDNS systemd . Рабочие нагрузки, исполняемые на узле, отправляют DNS-запросы в эту службу, которая разрешает их локально, уменьшая сетевые переходы и ускоряя выполнение DNS-запросов.

  • Настраиваемое поведение DNS: Вы можете использовать kubeDNSOverrides и vnetDNSOverrides управлять поведением DNS в кластере.

  • Избегайте гонок conntrack и исчерпания таблицы conntrack: Pods отправляют DNS-запросы в службу LocalDNS на том же узле без создания записей таблицы. Пропуск отслеживания подключения помогает сократить состояние гонки conntrack и избежать переполнения таблиц DNS-записями UDP. Эта оптимизация предотвращает отклонение и прерывание подключений, вызванных условиями гонки и исчерпанием таблицы conntrack.

  • Подключение обновлено для TCP: Подключение от localdns кэша к службе CoreDNS кластера осуществляется с помощью Протокола управления передачей данных (TCP). TCP позволяет перебалансировать подключение и удаляет conntrack записи таблицы, когда сервер закрывает подключение (в отличие от подключений UDP, которые по умолчанию имеют 30-секундное время ожидания). Приложения не нуждаются в изменениях, так как localdns служба по-прежнему прослушивает трафик UDP.

  • Кэширование: Подключаемый модуль кэша LocalDNS можно настроить с параметрами serviceStale и Time to Live (TTL). serveStale, serveStaleDurationInSeconds и cacheDurationInSeconds параметры могут быть настроены для обеспечения устойчивости DNS, даже во время сбоя вышестоящего DNS.

  • Элемент управления протоколом: Для каждого домена можно задать протокол запросов DNS (например, PreferUDP или ForceTCP). Эта гибкость позволяет оптимизировать DNS-трафик для определенных доменов или соответствовать требованиям к сети.

Другие преимущества и соображения

Преимущества Соображения
Улучшена масштабируемость. Снижает нагрузку на централизованные модули pod CoreDNS Минимальные затраты на ресурсы: использует небольшой объем ЦП и памяти на каждом узле
Простая интеграция: не требует изменений в существующих подключениях к приложению Изменения конфигурации. Обновления требуют обновления образа узла, что может привести к временным сбоям
Блокировать недопустимые домены поиска: запрещает недопустимые запросы DNS на уровне узла

Используя LocalDNS, вы получаете более быстрое и более надежное разрешение DNS для рабочих нагрузок, снижает риск сбоев, связанных с DNS, и получаете больше контроля над трафиком DNS в среде AKS.

Дальнейшие шаги

Сведения о включении LocalDNS и настройке параметров в кластере AKS см. в руководстве по использованию LocalDNS.

Дополнительные сведения см. в статье Основные понятия сети для приложений в AKS.