Finalizers - технология, которая позволяет передать kubernetes информацию о том, что перед тем, как удалить какой-то ресурс из kubernetes, необходимо выполнить определённую логику.

Официальная документация -https://kubernetes.io/docs/concepts/overview/working-with-objects/finalizers/

Статья на тему - https://kubernetes.io/blog/2021/05/14/using-finalizers-to-control-deletion/

Но я по прежнему считаю, что что бы лучше всего понять как работает технология - лучше смотреть tutorial’ы для разработчиков - https://book.kubebuilder.io/reference/using-finalizers.html

Раньше единственное, что проверялось, перед тем как удалить какой-либо ресурс из K8s, это есть ли у этого ресурса children.

Например:

**Pod** - ребёнок **ReplicaSet**

**ReplicaSet** - ребёнок **Deployment**

**Deployment** - ребёнок **NameSpace**

Если удалить какой-то ресурс сначала будут удалены всё его дети, а потом и сам ресурс. Именно по этому, когда мы удаляем большие NameSpaces часто приходится немного подождать.

Однако много времени прошло и сейчас у нас есть возможность настройки различных сценариев и действий при удалении контролируемых ресурсов. Однако есть ограничения:

Работает это примерно так: