NodeLocal DNS Cache позволяет снизить нагрузку по DNS-запросам в кластере Kubernetes. NodeLocal DNS позволяет повысить стабильность преобразования DNS-имён, что в свою очередь позволит избежать правил DNAT, connection tracking и ограничений по количеству соединений.
начало внимание
Для Kubernetes-кластеров, развёрнутых на платформе Deckhouse, не требуется установка NodeLocal DNS. В этом случае используйте встроенный модуль.
конец внимание
Установка состоит из четырёх этапов:
- Получение IP-адреса сервиса kube-dns.
- Загрузка Helm-чарта и конфигурационного файла.
- Заполнение конфигурационного файла.
- Установка чарта Node Local DNS с помощью Helm в Kubernetes-кластер.
Шаг 1: Получение IP-адреса сервиса kube-dns
Сервис kube-dns как правило расположен в namespace kube-system
кластера Kubernetes.
Определите IP-адрес сервиса kube-dns, выполнив команду:
kubectl get svc kube-dns -n kube-system -o jsonpath={.spec.clusterIP}
Результатом выполнения команды должен быть IP-адрес, который будет использован на шаге 3. В рамках статьи результатом выполнения команды стал IP-адрес 172.20.0.10.
Получение IP-адреса сервиса kube-dns в Deckhouse:
Выполните команду: kubectl get svc d8-kube-dns -n kube-system -o jsonpath={.spec.clusterIP} |
Шаг 2: Загрузка Helm-чарта и конфигурационного файла
Для установки через интернет получите конфигурационный файл values-nodelocal-dns.yaml
, выполнив команду:
helm repo add elma365 https://charts.elma365.tech
helm repo update
helm show values elma365/node-local-dns > values-nodelocal-dns.yaml
Получение конфигурационного файла для установки в закрытом контуре без доступа в интернет
helm repo add elma365 https://charts.elma365.tech Подробнее об этом читайте в статье «Загрузка образов ELMA365».
tar -xf node-local-dns-X.Y.Z.tgz |
Шаг 3: Заполнение конфигурационного файла
Заполните конфигурационный файл values-nodelocal-dns.yaml
для установки NodeLocal DNS Cache.
## Настройки NodeLocal DNS Cache
node-local-dns:
config:
## домен кластера
dnsDomain: "cluster.local"
## IP-адрес сервиса kube-dns
dnsServer: "172.20.0.10"
## IP-адрес для NodeLocal DNS Cache.
localDns: "169.254.20.25"
где:
node-local-dns.config.dnsDomain
— домен кластера Kubernetes;node-local-dns.config.dnsServer
— IP-адрес сервиса kube-dns, полученный на шаге 1;node-local-dns.config.localDns
— локальный IP-адрес для NodeLocal DNS Cache.
Для подключения к приватному registry нужно:
## Настройки NodeLocal DNS Cache где формат repository:
|
Шаг 4: Установка чарта Node Local DNS с помощью Helm в Kubernetes-кластер
Выполните установку чарта Node Local DNS в namespace kube-system
.
Для установки через интернет:
helm upgrade --install nodelocaldns elma365/node-local-dns -f values-nodelocal-dns.yaml -n kube-system
Для офлайн-установки без доступа в интернет:
helm upgrade --install nodelocaldns ./node-local-dns -f values-nodelocal-dns.yaml -n kube-system
Удалить чарт Node Local DNS с помощью Helm в Kubernetes-кластере
Чтобы удалить чарт Node Local DNS в namespace kube-system
, выполните команду:
helm uninstall nodelocaldns -n kube-system