TGViewer
CORTEL CORTEL @cortel_cloud · 4.07K subscribers
Post #2750 841
Перезапуск подов в Kubernetes.

Есть четыре разных перезапуска:

— Перезапуск контейнера — процесс убит и пересоздан, объект пода остался. UID и IP не меняются, restart count +1.
— Пересоздание пода — объект удалён, создан новый. UID новый, IP новый, restart count сбрасывается в 0.
— Rolling update — новый ReplicaSet поднимает новые поды, старые завершаются. Тоже новые UID и IP.
— In-place resize (1.35 GA) — cgroups обновляются, процесс не трогается. UID и IP неизменны.

Простой тест:
Изменился ли UID пода?
Если да — это пересоздание, а не перезапуск.
Если нет — тот же объект пода продолжил жить, перезапустился только процесс внутри.

➡️ Что часто упускают

kubelet следит за спецификацией пода — а не за ConfigMap'ами, Secret'ами или CRD Istio. Если вы обновили ConfigMap, но spec пода не изменился — kubelet ничего не сделает. Изменение для kubelet попросту невидимо.
Этот факт объясняет большую часть расследований «почему мой конфиг не обновился?» в проде.

💬 Что вызывает перезапуск, а что — нет?

— ConfigMap/Secret через env var
— процесс читает переменные один раз при execve(). POSIX-контракт: никто извне не может их менять. Нужен явный rollout restart.
— ConfigMap/Secret как volume — kubelet делает атомарную подмену симлинка. Срабатывает IN_CREATE на ..data, а не IN_MODIFY на файле — большинство наивных реализаций reload этот момент пропускает. Приложение должно само перечитать файл.
— Смена образа — всегда пересоздание пода через rolling update. Новый ReplicaSet, новый UID, новый IP. Это не перезапуск.
— CPU/Memory в 1.35 GA — резайз без пересоздания пода. UID и IP не меняются. Контейнер перезапускается только если так указано в resizePolicy.
— Istio VirtualService / DestinationRule — никогда не перезапускает. Istiod пушит конфиг через xDS gRPC прямо в Envoy, в память. Файлов на диске нет.
— NetworkPolicy — никогда. CNI агент обновляет eBPF/iptables на ноде, поды не трогаются.

💬 Команды для проверки

Перезапуск или пересоздание?


kubectl get pod <pod> -n <namespace> -o custom-columns="NAME:.metadata.name,UID:.metadata.uid,IP:.status.podIP,RESTARTS:.status.containerStatuses[0].restartCount"

События в поде


kubectl describe pod <pod> -n <namespace> | grep -A 20 "Events:"


Понимание этих сценариев экономит время в инцидентах. Фраза «под перезапустился» слишком общая: сначала смотрим на UID и restart count. Так сразу видно, пересоздался сам pod или перезапустился только контейнер внутри.

С hot-reload сложнее. Он удобен, но не всегда даёт явный сигнал об ошибке: приложение может принять кривой конфиг, а проблема проявится позже и в другом месте. Пересоздание pod дороже, зато честнее: если что-то сломано, это быстрее станет видно по статусам, readiness и rollout.

#заметкиИнженера
  • 👍 5
  • 🔥 2
  • 👏 2
More from @cortel_cloud
  1. Oct 1, 2026🖥 sed — потоковый редактор текста в Linux 🤓 Появился в Bell Labs в 1970-х и до сих пор и…
  2. Sep 29, 2026🖥 РАЗНИЦА Block, File и Object Storage 🧑‍🎓Повторение — мать учения. Для разных задач по…
  3. Sep 25, 2026😎 Когнитивная РАЗгрузка За неделю с горящими дедлайнами, часовыми ВКС и постоянным перекл…
  4. Sep 23, 2026💻 kubectl diff: обработка изменений в CI/CD kubectl diff сравнивает текущую конфигурацию…
  5. Sep 18, 2026🛡 ДА! У НАС ЦЕЛАЯ ЧЕРЕДА ПОЛЕЗНЫХ ЭФИРОВ ПРО ИБ! 🎙 Уже 24 сентября Вероника Нечаева, выс…
  6. Sep 16, 2026👩‍💻 Работа с ПДн это непрерывный процесс. Компания меняется — появляются новые сервисы,…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →