Идеальные настройки для Kubernetes DNS для использования systemd resolvd entires - PullRequest
0 голосов
/ 13 ноября 2018

Я собираюсь развернуть новый кластер K8S baremetal, используя KubeSpray.На моих агентах запущен resolvd, который не принимает параметры DNS от /etc/resolvd.conf, а скорее принимает их от /etc/systemd/resolved.conf.

Итак, какой параметр DNS лучше использовать?CoreDNS?KubeDNS?Просто хочу убедиться, что развертываемые мной модули используют те же DNS-серверы, которые настроены на узлах моего агента.

Какой выбор должен быть для

# Can be dnsmasq_kubedns, kubedns, coredns, coredns_dual, manual or none
dns_mode: kubedns
# Set manual server if using a custom cluster DNS server
#manual_dns_server: 10.x.x.x

# Can be docker_dns, host_resolvconf or none
resolvconf_mode: docker_dns

?

1 Ответ

0 голосов
/ 14 ноября 2018

Согласно официальной документации :

Начиная с Kubernetes v1.12, CoreDNS - рекомендуемый DNS-сервер, заменяющий kube-dns .Тем не менее, kube-dns все еще может быть установлен по умолчанию с некоторыми инструментами установщика Kubernetes.Обратитесь к документации, предоставленной вашим установщиком, чтобы узнать, какой DNS-сервер установлен по умолчанию.

Развертывание CoreDNS предоставляется как служба Kubernetes со статическим IP-адресом.И CoreDNS, и служба kube-dns имеют имя kube-dns в поле metadata.name.Это сделано для обеспечения большей совместимости с рабочими нагрузками, которые полагались на устаревшее kube-dns имя службы для разрешения адресов, входящих в кластер.Он абстрагирует детали реализации того, какой DNS-провайдер работает за этой общей конечной точкой.

Если для блока dnsPolicy установлено значение «default», он наследует конфигурацию разрешения имен от узла, к которому подключен модуль.работает на.DNS-разрешение модуля должно вести себя так же, как и узел.Но смотрите Известные проблемы .

Если вы не хотите этого или если вам нужна другая конфигурация DNS для модулей, вы можете использовать флаг --resolv-conf кублета.Установите этот флаг на «», чтобы блоки не могли наследовать DNS.Задайте для него правильный путь к файлу, чтобы указать файл, отличный от /etc/resolv.conf для наследования DNS.

Известная проблема :

В некоторых дистрибутивах Linux (например, Ubuntu) используйтелокальный DNS-преобразователь по умолчанию (systemd-resolved).Systemd-resolved перемещает и заменяет /etc/resolv.conf заглушкой, которая может вызвать фатальный цикл пересылки при разрешении имен на вышестоящих серверах.Это можно исправить вручную, используя флаг --resolv-conf kubelet, чтобы указать на правильный resolv.confsystemd-resolved, это /run/systemd/resolve/resolv.conf).kubeadm 1.11 автоматически обнаруживает systemd-resolved и соответствующим образом настраивает флаги kubelet.

Установки Kubernetes не настраивают файлы resolv.conf узлов для использования DNS кластера по умолчанию, поскольку этот процесс по своей сути зависит от распределения.Это, вероятно, должно быть реализовано в конечном итоге.

libc Linux невозможно застрял ( см. Эту ошибку 2005 ) с ограничением только 3 DNS nameserver записей и 6 DNS search записей.Kubernetes должен потреблять 1 nameserver запись и 3 search запись.Это означает, что если локальная установка уже использует 3 nameserver с или использует более 3 search с, некоторые из этих настроек будут потеряны.В качестве частичного обходного пути узел может запустить dnsmasq, который предоставит больше nameserver записей, но не больше search записей.Вы также можете использовать флаг --resolv-conf kubelet.

Если вы используете Alpine версии 3.3 или более раннюю в качестве базового образа, DNS может работать некорректно из-за известной проблемы с Alpine.Проверьте здесь для получения дополнительной информации.

...