Установка NodeLocal DNS
NodeLocal DNS снижает нагрузку по DNS-запросам за счет запуска кеша на каждом узле в кластере Managed Service for Kubernetes. Это позволяет повысить производительность и отказоустойчивость кластера Managed Service for Kubernetes.
Перед началом работы
Убедитесь, что группы безопасности для кластера Managed Service for Kubernetes и его групп узлов настроены корректно. Если отсутствует какое-либо из правил — добавьте его.
Важно
От настройки групп безопасности зависит работоспособность и доступность кластера, а также запущенных в нем сервисов и приложений.
Установка с помощью Yandex Cloud Marketplace
- Перейдите на страницу каталога и выберите сервис Managed Service for Kubernetes.
- Нажмите на имя нужного кластера Managed Service for Kubernetes и выберите вкладку
Marketplace. - В разделе Доступные для установки приложения выберите NodeLocal DNS и нажмите кнопку Перейти к установке.
- Задайте настройки приложения:
-
Пространство имен — выберите пространство имен
kube-system
. -
Название приложения — укажите название, под которым приложение будет развернуто в кластере Managed Service for Kubernetes.
-
Внутренний IP-адрес службы kube-dns — адрес для обращения к NodeLocal DNS Cache. Запросы, отправленные из подов приложений по адресу в поле, маршрутизируются на local DNS
с помощью правил iptables.Поле содержит адрес
ClusterIP
сервисаkube-dns
в пространстве именkube-system
. Значение поля можно получить с помощью команды:kubectl get svc kube-dns -n kube-system -o jsonpath={.spec.clusterIP}
Так как Yandex Cloud добавляет сервис
kube-dns
при создании кластера, IP-адрес сервиса предопределен. Поэтому его нельзя изменить в поле Внутренний IP-адрес службы kube-dns. -
Работа с Cilium — выберите эту опцию, если кластер использует контроллер сетевых политик Cilium.
-
- Нажмите кнопку Установить.
- Дождитесь перехода приложения в статус
Deployed
.
После установки NodeLocal DNS использует следующие значения:
- Зона кластера Managed Service for Kubernetes —
cluster.local
. - Адрес кеша NodeLocal DNS —
169.254.20.10
. - Порт приложения для внешних запросов —
53
. - Порт для сбора метрик Prometheus —
9253
.
Установка с помощью Helm-чарта
-
Установите менеджер пакетов Helm
версии не ниже 3.8.0. -
Установите kubectl
и настройте его на работу с созданным кластером. -
Получите адрес для обращения к NodeLocal DNS Cache. Адрес понадобится для установки Helm-чарта
:kubectl get svc kube-dns -n kube-system -o jsonpath={.spec.clusterIP}
Команда отображает адрес
ClusterIP
сервисаkube-dns
в пространстве именkube-system
. Сервисkube-dns
устанавливается автоматически во время создания кластера, поэтому IP-адрес сервиса предопределен.Запросы, отправленные из подов приложений по полученному адресу, маршрутизируются на local DNS
с помощью правил iptables. -
Для установки Helm-чарта с NodeLocal DNS выполните команду:
helm pull oci://cr.yandex/yc-marketplace/yandex-cloud/node-local-dns \ --version 1.5.1 \ --untar && \ helm install \ --set config.cilium=false \ --set config.clusterIp="<IP-адрес_kube-dns>" \ node-local-dns ./node-local-dns/
Примечание
Если вы используете версию Helm ниже 3.8.0, добавьте в начало команды строку
export HELM_EXPERIMENTAL_OCI=1 && \
, чтобы включить поддержку Open Container Initiative (OCI) в клиенте Helm.
Подробнее о настройке локального кеширования DNS см. в разделе Настройка NodeLocal DNS Cache.