Вы можете настроить свой модуль DNS и настроить процесс разрешения DNS в Kubernetes.
DNS - это встроенная служба Kubernetes, запускаемая автоматически с помощью надстройки кластера администратора дополнений.
CoreDNS - самый популярный DNS-сервер, заменяющий kube-dns.
Развертывание CoreDNS предоставляется в качестве службы Kubernetes со статическим c IP. И CoreDNS, и служба kube-dns называются kube-dns в поле metadata.name. Это сделано для того, чтобы обеспечить большую совместимость с рабочими нагрузками, использующими устаревшее имя службы kube-dns для разрешения адресов внутри кластера. Он абстрагирует детали реализации того, какой DNS-провайдер работает за этой общей конечной точкой. Кублет передает DNS каждому контейнеру с флагом --cluster-dns =.
DNS-именам также нужны домены. Локальный домен в кубеле настраивается с флагом --cluster-domain=<default-local-domain>
.
. DNS-сервер разрешает поиск портов, прямой поиск и обратный поиск IP-адресов (записи PTR).
Если dnsPolicy модуля настроен на «по умолчанию», он наследует конфигурацию разрешения имен от узла, на котором работает модуль. DNS-разрешение модуля должно вести себя так же, как и узел. Но смотрите Известные проблемы.
Если вы не хотите этого или если вам нужна другая конфигурация DNS для модулей, вы можете использовать флаг kubelet’s --resolv-conf
. Установите этот флаг на «», чтобы блоки не могли наследовать DNS. Задайте для него правильный путь к файлу, чтобы указать файл, отличный от /etc/resolv.conf
для наследования DNS.
Для каждого модуля есть возможность установить политики DNS. Kubernetes поддерживает следующие политики DNS:
- По умолчанию : это значение устанавливается для модулей, которые получают конфигурацию разрешения имен от узла, на котором запущен c модуль.
- ClusterFirst : это значение задается для любого DNS-запроса, который не соответствует настроенному суффиксу домена кластера, например:
www.kubernetes.io
- ClusterFirstWithHos tNet: это значение устанавливается, если модули работают с hostNetwork
- Нет : это значение позволяет модулям пропускать настройки DNS в среде Kubernetes. Все настройки DNS должны быть предоставлены с использованием поля dnsConfig в Pod Spe c.
Обратите внимание, что значение «Default» отличается от значения по умолчанию Политика DNS. Если dnsPolicy не указан, то значением по умолчанию для политики DNS является «ClusterFirst» .
Вот пример файла конфигурации модуля со спецификацией c Политика DNS:
apiVersion: v1
kind: Pod
metadata:
name: dns-example
spec:
containers:
- name: dns-test
image: eg_postgresql:latest
command:
- sleep
- "4000"
imagePullPolicy: IfNotPresent
name: eg_postgresql
restartPolicy: Always
hostNetwork: true
dnsPolicy: ClusterFirstWithHostNet
Подробнее здесь: dns-kubernetes , dns-services-pod .