Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
LocalDNS — это функция в Azure Kubernetes Service (AKS), предназначенная для повышения производительности разрешения системы доменных имен (DNS) и устойчивости для рабочих нагрузок, выполняемых в кластере. При развертывании ПРОКСИ-сервера DNS на каждом узле LocalDNS снижает задержку запросов DNS, повышает надежность во время сбоев в сети и предоставляет дополнительные параметры конфигурации для кэширования и пересылки DNS. В этой статье объясняется, как работает LocalDNS, его параметры конфигурации и как включить, проверить и устранить неполадки LocalDNS в кластерах AKS.
Сведения о том, что такое LocalDNS, включая сведения об архитектуре и ключевые возможности, см. в статье DNS Resolution в Azure Kubernetes Service (AKS).
Рекомендации по настройке LocalDNS
При реализации LocalDNS в кластерах AKS рассмотрите следующие рекомендации.
Начните с минимальной конфигурации: начните с простой конфигурации, которая использует
Preferredрежим для проверки синтаксиса конфигурации LocalDNS перед переходом вRequiredрежим. РежимPreferredпроверяет конфигурацию без включения LocalDNS, что позволяет перехватывать ошибки конфигурации рано, не влияя на кластер.Реализуйте правильные стратегии кэширования: настройте параметры кэша на основе характеристик рабочей нагрузки:
- Для часто изменяющихся записей используйте значения
cacheDurationInSecondsболее короткие. При этом важно отметить, что cacheDurationInSeconds действует в качестве ограничения на срок жизни записи DNS, но не увеличивает его. Результирующий TTL — это наименьшее из того, что возвращается из вышестоящего модуля, или того, что задано в плагине кэша. - Для стабильных записей используйте более длительные сроки кэша, чтобы уменьшить количество запросов DNS.
- Включите
serveStaleсоответствующие параметры для обслуживания службы во время сбоев DNS. - Кэширование с помощью LocalDNS работает на основе лучших усилий и не гарантирует устаревшие ответы. Кэш делится на 256 сегментов и по умолчанию не более 10 000 записей, что позволяет каждому сегменту хранить около 39 записей. При заполнении шарда и добавлении новой записи одна из существующих записей выбирается случайным образом для вытеснения. Нет предпочтений для более старых или истекших записей. В результате устаревшая запись может не всегда быть доступной, особенно при большом томе запроса.
- Для часто изменяющихся записей используйте значения
Мониторинг производительности DNS: после включения LocalDNS отслеживайте производительность DNS приложения с помощью:
- Метрики производительности приложений.
- Метрики узлов для обнаружения снижения сетевого давления.
- Записи в журнале, когда
queryLoggingустановлено наLog.
Следуйте принципу наименьших привилегий: при настройке правил пересылки DNS разрешают доступ только к необходимым DNS-серверам и доменам.
Тестирование перед развертыванием в рабочей среде: всегда тестируйте конфигурацию LocalDNS в непроизводственных средах перед развертыванием в рабочих кластерах.
Используйте инфраструктуру как код (IaC): сохраните файлlocaldnsconfig.json в репозитории инфраструктуры и включите его в шаблоны развертывания AKS.
Конфигурация сети для перенаправления TCP: при использовании TCP для перенаправления DNS в VnetDNS убедитесь, что группы безопасности сети (NSG), брандмауэры или сетевые виртуальные устройства (NVAs) не блокируют tcp-трафик между серверами CoreDNS или LocalDNS и виртуальными сетями.
Избегайте включения как NodeLocal DNSCache, так и LocalDNS: не рекомендуется включить как вышестоящий узел Kubernetes NodeLocal DNSCache, так и LocalDNS в пуле узлов. Хотя AKS не блокирует эту конфигурацию, весь ТРАФИК DNS направляется через LocalDNS, что может привести к непредвиденному поведению или снижению преимуществ от NodeLocal DNSCache.
Предпосылки
Для использования LocalDNS необходимо иметь существующий кластер AKS с Kubernetes версии 1.31 и более поздних версий. Если вам нужен кластер AKS, можно создать его с помощью портала Azure CLI, Azure PowerShell или портала Azure.
Для этой статьи требуется Azure CLI версии 2.80.0 и более поздних версий. Если вы используете Azure Cloud Shell, последняя версия уже установлена.
LocalDNS поддерживается только в пулах узлов под управлением Azure Linux или Ubuntu 22.04 и более поздней версии.
Номер SKU виртуальной машины, используемый для пула узлов, должен иметь по крайней мере 4 виртуальных ЦП (ядра) для поддержки LocalDNS.
LocalDNS несовместим с примененными политиками фильтрации полных доменных имен (FQDN) в расширенных сетевых службах контейнеров (ACNS).
Управление localDNS в кластере AKS
LocalDNS настраивается на уровне пула узлов в AKS, то есть вы можете включить или отключить LocalDNS независимо для каждого пула узлов в кластере. Это настраивает поведение разрешения DNS на основе конкретных требований различных рабочих нагрузок или сред. Чтобы включить LocalDNS в пуле узлов, необходимо предоставить файл конфигурации: localdnsconfig.json , определяющий, как LocalDNS должен работать для этого пула узлов.
Замечание
Если вы используете автоматическую подготовку узла (NAP), см. раздел конфигурация LocalDNS для получения инструкций о том, как включить LocalDNS с использованием NAP.
Чтобы включить LocalDNS во время создания пула узлов, используйте следующую команду с пользовательским файлом конфигурации:
az aks nodepool add --name mynodepool1 --cluster-name myAKSCluster --resource-group myResourceGroup --localdns-config ./localdnsconfig.json
Чтобы включить LocalDNS в существующем пуле узлов, используйте следующую команду с пользовательским файлом конфигурации:
az aks nodepool update --name mynodepool1 --cluster-name myAKSCluster --resource-group myResourceGroup --localdns-config ./localdnsconfig.json
Это важно
Включение LocalDNS в пуле узлов инициирует операцию повторного создания образа на всех узлах в этом пуле. Этот процесс может привести к временным прерываниям в выполнении рабочих нагрузок, приводя к простою приложения, если не управлять им должным образом. Перед включением этого параметра следует запланировать возможные прерывания работы служб и убедиться, что приложения настроены на высокий уровень доступности или имеют соответствующие бюджеты нарушений.