Что такое ndots
и зачем оно нужно в Kubernetes
Параметр ndots
в DNS-настройках определяет, как Kubernetes трактует доменные имена: как полные (FQDN) или как неполные, требующие дополнения из поисковых доменов.
Как работает ndots
Если в имени содержится количество точек меньше, чем указано в ndots
, Kubernetes сначала добавляет поисковые домены из /etc/resolv.conf
, а потом делает запрос.
Пример
При ndots:5
и запросе service.default
(в нём одна точка) будут пробоваться:
service.default.<search-domain>
service.default
- Затем полное имя
Почему это важно
- Избыточные DNS-запросы — больше обращений к кластерному DNS.
- Задержки при резолвинге — особенно критично для сервисов.
- Неверные разрешения — если имя не соответствует шаблону поиска.
Рекомендованное значение
Обычно в Kubernetes рекомендуют:
ndots: 2
Так сервисы вроде service.namespace
(одна точка) обрабатываются корректно через поисковые домены.
Как задать ndots в Pod
В манифесте Pod можно указать через dnsConfig
:
apiVersion: v1
kind: Pod
metadata:
name: mypod
spec:
dnsPolicy: "Default"
dnsConfig:
options:
- name: ndots
value: "2"
Проверка
Изучите /etc/resolv.conf
в Pod:
kubectl exec -it mypod -- cat /etc/resolv.conf
Проверьте резолвинг:
dig myservice.namespace
Заключение
ndots
— это мелкая, но важная настройка. Она влияет на скорость и надёжность DNS в Kubernetes. Установите разумное значение, чтобы избежать лишних проблем и улучшить производительность.