Как Finalizer работает с объектом CustomResouce?

В Kubernetes и Operator-sdk мы можем определить CRD (Custom Resource Definition) и CR (Custom Resource). В моем контроллере оператора, когда инициализируется CR, согласование контроллера создает новое развертывание и службу.

Когда мы удаляем объект CR, связанные ресурсы (такие как развертывание или служба) также будут удалены одновременно. Я понимаю, что это должен сделать CR Finalizer. Но в Operator-SDK и моем коде контроллера я никогда не вижу кода для регистрации или добавления Finalizer для CR, есть ли какое-либо поведение по умолчанию для Operator-Sdk?

Может ли кто-нибудь указать, как это работает для случая - при удалении CR также были удалены связанные с ним развертывание и служба? Какая часть контроллера отвечает за это?


person Joe    schedule 13.11.2020    source источник


Ответы (1)


Удаление связанных ресурсов не является частью контроллера. Это делает сборщик мусора Kubernetes.

По сути, сборщик мусора, использующий OwnerReference объекты, чтобы найти потерянные ресурсы и удалить их. Скорее всего, вы установили OwnerReference, вызвав controllerutil.SetControllerReference где-нибудь в вашем коде.

person Grigoriy Mikhalkin    schedule 13.11.2020