I need to recover from a reconciler that runs indefinitely after exceeding x requeues using the controller runtime framework due to failures. I do know that I can stop requeuing by using reconcile.Result{Requeue:false}, nil
or set a back off using RequeueAfter. However, I need to stop and gracefully end the reconciliation after x attempts. Is there a way to accomplish this?
How to stop requeuing a request in reconciler in k8s controller runtime after x attempts?
207 views Asked by Aishwarya Nagaraj At
1
It is not possible using the
reconcile.Result
return value.If you expect a specific error, just stop reconcile when this specific error happens (for example a rate limiting error).
Otherwise you'll have to implement the logic yourself, somehow storing the amount of times you've reconcile your object either inside the controller (which becomes statefull) or in a workspace object alongside the object you're reconciling.