Вход на сайт

Просмотр новости

Найдите то, что Вас интересует

Одна цифра в /etc/resolv.conf способна положить внутренний DNS кластер быстрее, ...

Дата публикации: 24-09-2026 23:31:50

Одна цифра в /etc/resolv.conf способна положить внутренний DNS кластер быстрее, чем ботнет на 100 000 хостов.
Разберем анатомию классической аварии, когда параметр `ndots:5` в libc резолвере превращает один легитимный запрос к внешнему API в шторм из шести сетевых пакетов, умножая нагрузку на CoreDNS в разы.
По умолчанию в glibc значение `ndots` равно 1. Но в Kubernetes (и во многих базовых образах дистрибутивов) инжекция search domains в `/etc/resolv.conf` часто выставляет `ndots:5`. Это означает, что если в доменном имени точки встречаются реже пяти раз - а под это условие попадают почти все внешние вызовы вроде `api.stripe.com` или `s3.amazonaws.com` - glibc сначала пытается резолвить имя последовательно через все поисковые суффиксы кубера:
1. `api.stripe.com.default.svc.cluster.local` (NXDOMAIN)
2. `api.stripe.com.svc.cluster.local` (NXDOMAIN)
3. `api.stripe.com.cluster.local` (NXDOMAIN)
4. `api.stripe.com.c.internal-project.internal` (NXDOMAIN)
5. `api.stripe.com` ( SUCCESS )
Каждый шаг - это полноценный UDP (или TCP при fallback) запрос в CoreDNS, который честно идет по цепочке `kube-dns`. Если ваше приложение делает 10 000 запросов в секунду к внешним API, реальный трафик в сторону CoreDNS взлетает до 60 000 RPS. Начинается деградация кэша, срабатывают лимиты `iptables/conntrack` на UDP-соединениях, а p99 латентность сервисов улетает в космос.
Экономика инцидента бьет по карману мгновенно. Кластер из 50 инстансов CoreDNS на AWS `c6i.xlarge` вместо спокойной утилизации ресурсов в 15% упирается в CPU throttle из-за обработки миллионов пустых NXDOMAIN-ответов. Плюс скрытый TCO: деградировавший таймаут соединения (glibc ждет ответ по каждому суффиксу перед отправкой следующего) увеличивает время ожидания потоков в пуле приложения, вызывая каскадный отказ микросервисов.
Как лечить на уровне инфраструктуры:
- Принудительно переопределяйте `dnsConfig` в PodSpec для всех подов с интенсивным внешним трафиком, выставляя `ndots:1`.
- Настраивайте `dnsPolicy: ClusterFirstWithHostNet` или оптимизируйте `kube-dns/CoreDNS` с включением плагина `loop` и агрессивным кэшированием (`cache 30`).
- Используйте короткие канонические имена с точкой на конце (`api.stripe.com.`) в коде приложений - это заставляет glibc сразу идти за абсолютным адресом, минуя суффиксы.
- Инфраструктурный аудит и калькулятор TCO кластера: @Personnel_run_bot (/tma)
- База знаний и разборы: ftops.space
- ftops.space | Run-As-Daemon Infrastructure

Схожие новости

#Наименование новостиТональностьИнформативностьДата публикации
1Памятник kubelet, Kubernetes != CRI0713-07-2026
2Каждые 5 минут транзакции в высоконагруженной PostgreSQL базе внезапно замирают ...011.8624-09-2026
3Каждые 5 минут транзакции в PostgreSQL замирают на 3 - ...011.3224-09-2026
4CoreDNS-1.14.1 Release012.9915-01-2026
5Linux наконец-то не тормозит или пятничный релакс013.1807-08-2026
6CoreDNS-1.14.2 Release08.6706-03-2026
7Why is your Kubernetes cluster adding nodes when the dashboards look fine?017.0708-03-2026
8Инверсия приоритетов в Kubernetes: Когда планировщик убивает бизнес, спасая «важные» поды0713-07-2026
9Kubernetes teams trust automation to ship code but not to touch CPU, and AI is raising the stakes013.923-06-2026

Классификация: Мнения. Схожих патентов: 0. Схожих новостей: 9. Тональность: 0. Информативность: 9.57. Источник: vk.com.