🛠️ Объект удалили, но он часами остаётся в Terminating
В YAML:
metadata: deletionTimestamp: "2026-08-19T08:15:00Z" finalizers:
Первая мысль:
«Удалим finalizer вручную».
Но так можно убрать объект из API и потерять cleanup, ради которого finalizer был установлен.
Как работает finalizer:
delete request → API server ставит deletionTimestamp → объект остаётся в API → controller выполняет cleanup → controller удаляет finalizer → объект исчезает окончательно
Finalizer — не код. Это строковый ключ, например:
Логику выполняет controller или operator.
Поэтому вопрос не «как стереть finalizer», а «какой компонент должен его снять и почему он не завершил cleanup».
Что проверить:
kubectl get exampleresource demo -n production -o yaml kubectl describe exampleresource demo -n production
И точечно:
kubectl get exampleresource demo -n production -o jsonpath='{.metadata.deletionTimestamp}{"n"}{.metadata.finalizers}{"n"}'
Дальше смотрите:
— controller/operator; — его Pod или Deployment; — RBAC и ServiceAccount; — events; — logs; — доступность внешнего API; — состояние внешнего ресурса.
Частые причины:
— controller не работает; — потерял права; — внешний API недоступен; — cleanup завершён частично; — внешний ресурс уже в неожиданном состоянии; — reconciliation падает с ошибкой.
Важно: events могут не содержать всю причину. Логи controller часто важнее.
Ручное удаление finalizer не всегда приводит к утечке, но риск есть. Последствия зависят от того, что именно этот finalizer должен был гарантировать.
Типичная ошибка:
объект завис → стерли finalizers → объект исчез → решили, что cleanup завершён
Вывод:
deletionTimestamp → finalizers → ответственный controller → cleanup → events/logs → внешний ресурс → причина сбоя → штатное снятие finalizer
Сохраните диагностическую последовательность для ресурсов, зависших в Terminating.
🔹🔹🔹🔹