Alpine в k8s и DNS на 5 секунд: кто-нибудь объяснит этот ад с musl?

Рейтинг: 65.7% · 17 голосов
Дистрибутивы Linux, настройка серверов, сети, systemd, bash-скрипты, безопасность, бэкапы, мониторинг и сопровождение инфраструктуры.
Аватара пользователя
Omoto
Сообщения: 120
Зарегистрирован: 12 май 2026, 03:05

Alpine в k8s и DNS на 5 секунд: кто-нибудь объяснит этот ад с musl?

Сообщение Omoto »

Неделю ловил плавающий лаг в проде. Сервис на питоне в Alpine-образе, иногда коннект к внутреннему API залипает ровно на 5 секунд. Ровно 5, как по таймеру. Оказалось — DNS. tcpdump показал, что AAAA-запрос уходит, ответа нет, и резолвер тупо ждёт таймаут. Кто ещё на это напарывался?
👍2 ❤️ 🔥1 😄1 🤔1
✔ Лучший ответ сформирован автоматически — kube22
@lost300z, демагогия же. 40 мегабайт на образ умножь на сотню подов и пару тысяч пуллов в день при скейлинге, для нас это минуты cold start и трафик до registry в другом регионе. проблема не в alpine, а в том что ее тянут не глядя в base image. кто знает про musl и заранее крутит dnsConfig, у того просто работает.
Перейти к ответу →
Аватара пользователя
svelte88
Сообщения: 63
Зарегистрирован: 12 май 2026, 11:49

Re: Alpine в k8s и DNS на 5 секунд: кто-нибудь объяснит этот ад с musl?

Сообщение svelte88 »

Классика musl. Он шлёт A и AAAA параллельно в один сокет и если один ответ теряется на conntrack — ждёт полный таймаут. На glibc такого почти не видно. Это даже не баг твоего приложения.
👍1 ❤️2 🔥1 😄 🤔1
Аватара пользователя
seniornullptr
Сообщения: 7
Зарегистрирован: 13 май 2026, 23:56

Re: Alpine в k8s и DNS на 5 секунд: кто-нибудь объяснит этот ад с musl?

Сообщение seniornullptr »

Это знаменитый race в conntrack на UDP. DNAT для двух почти одновременных пакетов с одного сокета, один дропается. Есть воркэраунд: single-request-reopen в resolv.conf. Только musl его не поддерживает, лол.
👍3 ❤️ 🔥3 😄 🤔
Аватара пользователя
lorenzinoarq
Сообщения: 65
Зарегистрирован: 11 май 2026, 00:03

Re: Alpine в k8s и DNS на 5 секунд: кто-нибудь объяснит этот ад с musl?

Сообщение lorenzinoarq »

Вот именно. На Debian-базе ставишь options single-request-reopen и проблема уходит. На Alpine этой опции нет вообще, musl её игнорит. Мы из-за этого половину образов перевели на debian-slim.
👍 ❤️ 🔥2 😄 🤔
Аватара пользователя
dmsmith
Сообщения: 26
Зарегистрирован: 11 май 2026, 08:37

Re: Alpine в k8s и DNS на 5 секунд: кто-нибудь объяснит этот ад с musl?

Сообщение dmsmith »

Не понимаю хейта на musl. У меня сотни подов на Alpine, никаких 5 секунд. Может у вас просто ndots:5 кривой и каждый запрос гоняется по пяти search-доменам?
👍 ❤️ 🔥 😄 🤔
Аватара пользователя
lorenzinoarq
Сообщения: 65
Зарегистрирован: 11 май 2026, 00:03

Re: Alpine в k8s и DNS на 5 секунд: кто-нибудь объяснит этот ад с musl?

Сообщение lorenzinoarq »

ndots тоже подкрутили, до 2. Стало лучше с количеством запросов, но сами залипания на AAAA остались. Внешний домен резолвится мгновенно, внутренний svc.cluster.local — иногда 5с.
👍 ❤️ 🔥 😄 🤔
Аватара пользователя
Tcraw62981
Сообщения: 41
Зарегистрирован: 11 май 2026, 21:02

Re: Alpine в k8s и DNS на 5 секунд: кто-нибудь объяснит этот ад с musl?

Сообщение Tcraw62981 »

RustFan, везёт тебе. Разница в нагрузке и в том, есть ли у тебя IPv6 в кластере. Если AAAA реально никуда не маршрутизируется и дропается — musl тебя дождётся таймаута, потому что не делает graceful fallback как glibc.
👍1 ❤️1 🔥 😄1 🤔
Аватара пользователя
juniorredteam
Сообщения: 66
Зарегистрирован: 11 май 2026, 07:16

Re: Alpine в k8s и DNS на 5 секунд: кто-нибудь объяснит этот ад с musl?

Сообщение juniorredteam »

Замерял: glibc создаёт AAAA-запрос только если может поднять IPv6-сокет. musl лупит AAAA всегда. В кластере без нормального v6 это лишний запрос, который и попадает под conntrack-рейс. Вот тебе и 5 секунд.
👍 ❤️ 🔥 😄 🤔
Аватара пользователя
asyncmonk
Сообщения: 62
Зарегистрирован: 13 май 2026, 16:00

Re: Alpine в k8s и DNS на 5 секунд: кто-нибудь объяснит этот ад с musl?

Сообщение asyncmonk »

Мы просто выпилили AAAA. В CoreDNS воткнули template для AAAA чтобы возвращал пусто, плюс single-request на нодах. Лаги ушли. Но ощущение что лечишь симптом, а не болезнь.
👍 ❤️ 🔥 😄 🤔
Аватара пользователя
sleepypanic
Сообщения: 71
Зарегистрирован: 11 май 2026, 01:26

Re: Alpine в k8s и DNS на 5 секунд: кто-нибудь объяснит этот ад с musl?

Сообщение sleepypanic »

Болезнь — это NAT для DNS поверх UDP в принципе. musl тут просто честнее показывает кривую инфраструктуру. Поставьте NodeLocal DNSCache, он держит TCP до апстрима и весь этот conntrack-цирк исчезает.
👍 ❤️ 🔥 😄 🤔
Ответить
Поделиться темой: ✈ Telegram VK
Похожие запросы: что такое kubernetes и зачем он нуженkubernetes для начинающих с чего начать

Вернуться в «Linux и системное администрирование»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость