TGViewer
Сочный DevOps Сочный DevOps @andtree_sec · 420 subscribers
Post #103 27
finalizers в kubernetes

Finalizers - это механизм, который позволяет контролировать процесс удаления объектов в кластере. Он гарантирует, что перед удалением объекта будут также выполнены необходимые действия по очистке или завершению связанных ресурсов.

Как это работает?

Когда мы инициализируем удаление объекта kubernetes, он (kubernetes) устанавливает в metadata поле deletionTimestamp, но не удаляет объект до выполнения финализаторов. Затем контроллеры, связанные с объектом, обнаруживают, что объект помечен на удаление и имеет финализаторы. Контроллеры выполняют нужные действия, например удаляют связанные ресурсы. После успешного выполнения всех действий, контроллеры удаляют свои финализаторы из списка и когда данный список пуст, kubernetes окончательно удаляет ресурс из кластера.

Что делать если связанных ресурсов уже нет, но процесс удаления "завис"?

Такое не редко можно встретить, если удаляем например целиком namespace через:
kubectl delete ns <ns_name>


Коретка не возвращается, сам namespace висит в статусе terminating, хотя ресурсов внутри уже нет. В таком случае нужно провести ряд ручных действий по удалению NS. Как правило это нужно только для него, другие объекты, например PVC могут быть удалены просто с ручным удалением finalizers из манифеста. Например через kubectl edit pvc <name>.

Сначала сохраним спецификацию ns в виде json файла.
kubectl get ns <ns_name> -o json > namespace.json


Открываем созданный файл на редактирование, у нас должна быть строка:
"spec": {
"finalizers": [
"kubernetes"
]
}

Нам нужно удалить kubernetes finalizers, оставив пустой массив. То есть приводим к виду:
"spec": {
"finalizers": []
}


Затем применяем изменения назад в кластер командой:
kubectl replace --raw "/api/v1/namespaces/<имя-namespace>/finalize" -f namespace.json


После этого повисший ns в состоянии terminating будет удален.

#kubernetes
More from @andtree_sec
  1. Sep 7, 2026Давненько не было сообщений. Скорее всего в будущем они уйдут в telegraf, который я еще не…
  2. Jul 6, 2026Последнее время на работе часто приходится работать с apache flink и даже что-то писать на…
  3. Jun 4, 2026Немножко про молекула тесты... У нас принято использовать в переменных lookup плагин для д…
  4. May 20, 2026Очередной небольшой проект. Веб-приложение, которое агрегирует через стандартный механиз g…
  5. May 15, 2026Включаем профилирование в ansible Профилирование, это вывод даты, времени запуска и итогов…
  6. Apr 17, 2026Так выглядит общий dashbord работы с инцидентами.
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 →