Когда ты удаляешь объект в Kubernetes — например,
CustomResource, — он не исчезает сразу. Вместо этого kube-apiserver помечает его как deletionTimestamp, и объект "ждёт" удаления. Почему? Потому что в его манифесте может быть finalizer — специальный маркер, что "я не готов умереть, пока кто-то не выполнит важную работу".🤔 Пример:
metadata:
finalizers:
- mycompany.com/cleanup
Это значит, что перед удалением кто-то (обычно контроллер) должен сделать, например, очистку ресурсов в AWS или GCP. Только после этого finalizer удаляется, и объект реально исчезает.
💣 Где тут подводные камни?
Если контроллер, который должен удалить финалайзер, умер, сломался или вообще не запущен — объект останется висеть в статусе "Terminating" вечно. А это может заблокировать ресурсы, сломать пайплайны, вызвать боль в проде.
🔧 Как починить?
Иногда приходится руками чистить финалайзеры:
kubectl patch myresource myname -p '{"metadata":{"finalizers":[]}}' --type=merge
⚠️ Только если ты точно знаешь, что cleanup не нужен или уже сделан.
Подпишись 👉@devopslib