Постмортем: kubeadm кластер протух по сертификатам, прод лежал 3.5 часа в воскресенье
Рейтинг: 61% · 6 голосов
Войдите, чтобы голосовать
Голосовать «За» и «Против» могут только авторизованные пользователи. Войдите в свой аккаунт — или зарегистрируйтесь, это займёт минуту.
Нет аккаунта? Зарегистрироваться
Постмортем: kubeadm кластер протух по сертификатам, прод лежал 3.5 часа в воскресенье
Расскажу, как мы в воскресенье лежали с шести утра до полдесятого, чтобы вы так не делали.
Вводные: kubeadm кластер на 1.31, три мастера, 12 воркеров, железо в Selectel. Ставил его админ, который уволился прошлой весной. С тех пор кластер никто не апгрейдил, потому что работает же.
В субботу ночью, ровно через год после последнего kubeadm upgrade, протухли сертификаты control plane. Кто не в курсе: kubeadm выписывает их на год и продлевает при каждом апгрейде кластера. Нет апгрейдов, нет и продления.
Дальше цепочка. apiserver перестал принимать соединения, kubectl с любой машины отдает x509: certificate has expired or is not yet valid. Поды при этом живут, трафик идет, так что алерт на api down дежурный в три ночи увидел и решил, что флапает мониторинг (отдельный разговор). А в шесть утра unattended-upgrades перезагрузил две ноды, kubelet после ребута не смог зарегистрироваться, поды с этих нод никуда не переехали, потому что шедулеру нечем шедулить. Минус треть капасити, и на одной из этих нод жили оба пода ингреса. Все, приехали.
Чинили так: на каждом мастере kubeadm certs renew all, потом перезапуск статик подов (унесли манифесты из /etc/kubernetes/manifests, подождали, вернули), забрали свежий admin.conf. Клиентские серты кубелетов ротация продлевала сама, тут повезло. Итого даунтайм 3 часа 27 минут, из них почти час мы просто выясняли, у кого вообще есть ssh на мастера.
Выводы для себя написали, но интересно, как у людей: ставите отдельный алерт на сроки сертов или просто апгрейдитесь по расписанию и не паритесь?
Вводные: kubeadm кластер на 1.31, три мастера, 12 воркеров, железо в Selectel. Ставил его админ, который уволился прошлой весной. С тех пор кластер никто не апгрейдил, потому что работает же.
В субботу ночью, ровно через год после последнего kubeadm upgrade, протухли сертификаты control plane. Кто не в курсе: kubeadm выписывает их на год и продлевает при каждом апгрейде кластера. Нет апгрейдов, нет и продления.
Дальше цепочка. apiserver перестал принимать соединения, kubectl с любой машины отдает x509: certificate has expired or is not yet valid. Поды при этом живут, трафик идет, так что алерт на api down дежурный в три ночи увидел и решил, что флапает мониторинг (отдельный разговор). А в шесть утра unattended-upgrades перезагрузил две ноды, kubelet после ребута не смог зарегистрироваться, поды с этих нод никуда не переехали, потому что шедулеру нечем шедулить. Минус треть капасити, и на одной из этих нод жили оба пода ингреса. Все, приехали.
Чинили так: на каждом мастере kubeadm certs renew all, потом перезапуск статик подов (унесли манифесты из /etc/kubernetes/manifests, подождали, вернули), забрали свежий admin.conf. Клиентские серты кубелетов ротация продлевала сама, тут повезло. Итого даунтайм 3 часа 27 минут, из них почти час мы просто выясняли, у кого вообще есть ssh на мастера.
Выводы для себя написали, но интересно, как у людей: ставите отдельный алерт на сроки сертов или просто апгрейдитесь по расписанию и не паритесь?
✔ Лучший ответ сформирован автоматически — vault_lord
У нас ровно это же случилось в 2023, один в один, вплоть до воскресенья. После того инцидента посчитали и уехали на managed в Yandex Cloud. Час простоя нам стоил порядка 400к выручки, а за control plane облако берет копейки на этом фоне, серты и апгрейды мастеров теперь не моя проблема в принципе. VK Cloud и Selectel managed тоже смотрели, по деньгам сопоставимо, остались у Яндекса из-за остально…
Re: Постмортем: kubeadm кластер протух по сертификатам, прод лежал 3.5 часа в воскресенье
@Omoto, Классика жанра, через это проходит каждый, кто унаследовал kubeadm кластер. По мониторингу: проще всего blackbox-exporter с метрикой probe_ssl_earliest_cert_expiry на порт 6443, алерт за 30 дней. Плюс kubeadm certs check-expiration в крон с выводом в телегу. Костыль, но за 10 минут закрывает вопрос навсегда.
И обновляйтесь уже. 1.31 без поддержки с прошлого лета, вы там на минном поле и без сертов.
И обновляйтесь уже. 1.31 без поддержки с прошлого лета, вы там на минном поле и без сертов.
Re: Постмортем: kubeadm кластер протух по сертификатам, прод лежал 3.5 часа в воскресенье
не апгрейдили кластер 14 месяцев и удивляетесь, что он протух. это в доках kubeadm написано буквально первой строкой в разделе про PKI. повезло еще, что etcd-шные пиринговые серты не легли в более веселый момент, а то восстанавливали бы кворум, а не манифесты туда-сюда таскали
Re: Постмортем: kubeadm кластер протух по сертификатам, прод лежал 3.5 часа в воскресенье
А почему у вас на нодах кубера вообще включен unattended-upgrades с авторебутом? Нода это скот, а не питомец, перезагружать ее должен оркестратор через drain, а не апт по своему расписанию. Поставьте kured, он хотя бы ноды по одной ребутает и с дрейном. Я бы в постмортеме это записал первым пунктом, серты у вас вторичная причина, без внезапного ребута вы бы тихо починились в понедельник утром.
- vault_lord
- Сообщения: 6
- Зарегистрирован: 27 май 2026, 11:32
Re: Постмортем: kubeadm кластер протух по сертификатам, прод лежал 3.5 часа в воскресенье
✔ Лучший ответ — сформирован автоматически
У нас ровно это же случилось в 2023, один в один, вплоть до воскресенья. После того инцидента посчитали и уехали на managed в Yandex Cloud. Час простоя нам стоил порядка 400к выручки, а за control plane облако берет копейки на этом фоне, серты и апгрейды мастеров теперь не моя проблема в принципе. VK Cloud и Selectel managed тоже смотрели, по деньгам сопоставимо, остались у Яндекса из-за остальной инфры.
Понимаю, что у вас железо и так просто не переедешь, но если кластер некому обслуживать (а у вас по описанию именно это), managed честнее, чем делать вид, что админ когда-нибудь найдется.
Понимаю, что у вас железо и так просто не переедешь, но если кластер некому обслуживать (а у вас по описанию именно это), managed честнее, чем делать вид, что админ когда-нибудь найдется.
Re: Постмортем: kubeadm кластер протух по сертификатам, прод лежал 3.5 часа в воскресенье
в k3s та же самая история, серты на год и продлеваются только при рестарте сервиса ближе к сроку истечения. не рестартили сервер год, получите тот же x509. так что не вариант, а та же мина, только сбоку. читайте, что советуете
- smith_zhenya
- Сообщения: 32
- Зарегистрирован: 11 май 2026, 02:02
Re: Постмортем: kubeadm кластер протух по сертификатам, прод лежал 3.5 часа в воскресенье
@Omoto, ОП на связи, апдейт. Поставили blackbox с алертом за 30 дней, check-expiration в крон, доступ на мастера теперь у троих, а не у одного. Запланировали апгрейд 1.31 -> 1.32 -> 1.33 на ближайшие два окна. Тому, кто писал про unattended-upgrades: справедливо, авторебут выключили, ребутаем через kured. За k3s спасибо, но перетаскивать 15 машин ради того же набора граблей не будем.
Поделиться темой:
✈ Telegram
VK
- Похожие темы
-
-
-
-
- Постмортем: 14 месяцев пилил метроидванию по вечерам, 89 продаж за первый месяц
7 ответов · 6 просмотров
-
-
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость