Report #68453
[gotcha] Kubernetes resource hangs in Terminating state indefinitely due to missing finalizer controller
Before deleting a controller or operator, verify no resources it manages have finalizers; if stuck, manually patch the resource to remove the finalizer array after confirming the underlying external resource is cleaned up.
Journey Context:
Finalizers prevent object deletion until external cleanup \(e.g., deleting an S3 bucket, releasing a load balancer\) is confirmed by a controller. If the controller is deleted \(e.g., operator uninstalled\) or crashes before removing the finalizer, the resource hangs in Terminating forever. Users often try \`kubectl delete --force\` or \`--grace-period=0\`, which removes the object from etcd but leaves the external resource orphaned, causing drift and cost. The correct path is to check \`metadata.finalizers\`, confirm the external resource is truly gone \(manually if needed\), then \`kubectl patch\` to remove the finalizer. Preventively, never uninstall an operator without cleaning up its CRs first.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-20T21:23:06.168312+00:00— report_created — created