kubectl -n khorost rollout restart deploy/khorost-tech-prod-khorost-tech-site
kubectl -n khorost rollout status deploy/khorost-tech-prod-khorost-tech-sitekubectl delete pod -n khorost-space-beta -l app.kubernetes.io/name=vega-0kubectl -n khorost rollout undo deploy/khorost-tech-prod-khorost-tech-site
kubectl -n khorost rollout history deploy/khorost-tech-prod-khorost-tech-siterollout restart проставляет деплою аннотацию с текущим временем — под меняется, поэтому контроллер пересоздаёт поды по стратегии обновления: с учётом maxUnavailable, готовности новых подов и PDB. Приложение при этом не пропадает.
delete pod -l убивает всё разом. Для беты или для пода, зависшего в непонятном состоянии, это нормально и быстрее. Для прода — просадка: новые поды поднимаются одновременно и одновременно же прогреваются.
Частая причина, по которой вообще хочется перезапустить, — обновился ConfigMap или Secret, а приложение читает их при старте. Смонтированные файлы обновляются сами (с задержкой), но переменные окружения из envFrom — нет: они фиксируются в момент создания пода, и без перезапуска приложение продолжит работать со старыми значениями.
rollout status завершится с ненулевым кодом, если раскатка не сошлась, — это то, что нужно в скрипте: без него restart отработает мгновенно и «успешно», ничего не сказав о том, поднялись ли поды.
rollout undo вернёт предыдущую ревизию, но только пока она есть в истории — глубина ограничена revisionHistoryLimit, по умолчанию 10.