Одна цифра в /etc/resolv.conf способна положить внутренний DNS-кластер быстрее, чем ботнет на 100 000 хостов. Речь идет о директиве ndots:5.
В Kubernetes по умолчанию для всех подов resolv.conf выглядит так:
nameserver 10.96.0.10
search default.svc.cluster.local svc.cluster.local cluster.local
options ndots:5
Что это значит для вашего сервиса? Параметр ndots определяет количество точек в доменном имени, при котором резолвер считает его "абсолютным". Если точек меньше пяти, glibc начинает перебор всех суффиксов из search-пути.
Теперь представьте микросервис, который делает запрос к внешнему API: например, api.stripe.com. В имени всего две точки (меньше пяти). Генерируется следующая очередь DNS-запросов:
1. api.stripe.com.default.svc.cluster.local
2. api.stripe.com.svc.cluster.local
3. api.stripe.com.cluster.local
4. api.stripe.com. (и только здесь мы получаем ответ)
Каждый внешний HTTP-запрос превращается в 4 паразитных NXDOMAIN ответа от CoreDNS. Если у вас 1000 RPS к внешним API, вы генерируете 4000 лишних запросов в секунду. В масштабах кластера это превращает CoreDNS в узкое горлышко, которое начинает дропать пакеты из-за переполнения UDP-буферов или CPU-стелса.
Результат? "Intermittent connection reset by peer" в логах приложения, latency скачет в космос, а SRE-команда в 3 часа ночи пытается понять, почему DNS-инфраструктура захлебывается, хотя трафик не вырос.
Как фиксить?
1. FQDN в коде. Добавляйте точку в конец имени: api.stripe.com. (с точкой). Это принудительно делает запрос абсолютным и обходит ndots.
2. Подстройка ndots. Если сервисы внутри кластера общаются редко, а внешних запросов много, установите ndots:1 в Deployment.
3. Use-cases с CoreDNS. Включите плагин `autopath` или `ndots:0` (если архитектура позволяет), чтобы минимизировать перебор.
4. HostNetwork. Для критических сервисов с огромным количеством внешних вызовов рассмотрите использование `dnsPolicy: Default`, чтобы резолвить имена через DNS хоста, минуя CoreDNS кластера.
TCO такого "недосмотра" считается просто. Потеря 100мс на каждом API-запросе из-за DNS-оверхеда при 10k RPS - это 1000 секунд задержки в секунду. В пересчете на инстансы, которые простаивают в ожидании ответа от DNS, вы переплачиваете облаку от 5 до 15% стоимости compute-ресурсов просто за то, что CoreDNS переваривает мусор.
DNS - это не просто "магия", это критический путь вашего трафика. Не позволяйте glibc управлять вашей доступностью.
- Инфраструктурный аудит и калькулятор TCO кластера: @Personnel_run_bot (/tma)
- База знаний и разборы: ftops.space
- ftops.space | Run-As-Daemon Infrastructure
| # | Наименование новости | Тональность | Информативность | Дата публикации |
|---|---|---|---|---|
| 1 | Одна цифра в /etc/resolv.conf способна положить внутренний DNS-кластер быстрее, чем ... | 0 | 12.01 | 21-09-2026 |
| 2 | Очередной разбор полетов в 03:00. Мониторинг Cilium показывает низкую загрузку ... | 0 | 9.21 | 21-09-2026 |
| 3 | Памятник kubelet, Kubernetes != CRI | 0 | 7 | 13-07-2026 |
| 4 | Ночной сбой 03:00. Мониторинг кричал о деградации аплинка, графики потерь ... | -1 | 10.33 | 21-09-2026 |
| 5 | [Show] swift-topomap: Silicon-aware TUI and eBPF metrics engine | 0 | 11.87 | 27-07-2026 |
| 6 | FastAPI на AMD FX-8320: оптимизация P99 latency в условиях ограниченных ресурсов (HDD, DDR3) | 0 | 12.41 | 22-02-2026 |
| 7 | Tatarnetes: как мы научили Kubernetes говорить по-татарски, цитировать Габдуллу Тукая и останавливаться на чай с молоком | 0 | 8.58 | 20-09-2026 |
| 8 | #новости 1. OpenAI выпускает брендированную клавиатуру для Codex. Не шутка ... | -2 | 7 | 04-07-2026 |
| 9 | 🌌 МИЦЕЛИЙ: КОСМИЧЕСКАЯ ПАРАДИГМА ИНФОРМАЦИИ --- ✨ ПРЕЛЮДИЯ: ТО, ЧТО ... | 5 | 7 | 03-07-2026 |
| 10 | Дырявый мессенджер | 0 | 15.23 | 20-07-2026 |