Что такое 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. Установите разумное значение, чтобы избежать лишних проблем и улучшить производительность.