tgoop.com/devopslib/119
Last Update:
💥 Kubernetes хаос и решения. Часть 2 - «Боль автообновлений»
Если у тебя в кластере внезапно всё «упало» ночью, а утром тебя встретил alert с фразой “Pods not ready” - скорее всего, виноваты автообновления.
Сценарий классический:
- Включен auto-upgrade для node pool в GKE/EKS/AKS.
- Cloud-провайдер решил, что пора обновить kubelet и runtime.
- Worker-ноды перезагрузились, pods пошли в Terminating
, Pending
, а кластер стал частично неработоспособным.
Почему так происходит:
- Не настроены PodDisruptionBudgets (PDB).
- Нет стратегии drain с учётом приоритета workloads.
- Stateful приложения (Postgres, Kafka, Redis) теряют лидерство и консистентность.
- Контроллеры не успевают пересоздавать pod'ы из-за лимитов ресурсов или ошибок readinessProbe.
Как лечить:
1. Отключи автообновления для node pool - обновляй вручную.
2. Введи maintenance window, чтобы обновления шли только в заданные часы.
3. Определи PDB для всех важных pods - не более 1-2 одновременно недоступных.
4. Используй drain-сервис например, kured с контролем через annotations.
5. Тестируй обновления на staging-кластере - симулируй rolling drain.
Подпишись 👉@devopslib
BY Библиотека девопса | DevOps, SRE, Sysadmin
Share with your friend now:
tgoop.com/devopslib/119