From b2eb6e7d033c5891832019c8b06f60503c944ea6 Mon Sep 17 00:00:00 2001 From: Alvaro Aleman Date: Sat, 9 Mar 2024 11:51:36 -0500 Subject: [PATCH] Nodelifecycle: Emit event when deletion failed The nodelifecycle controller emits an event before it deletes a node. Failures doing so for example due to a webhook are pretty hidden though, as they are only logged in the controller-manager. This change makes us emit an event for failing to delete a node including the error as well. --- .../controllers/nodelifecycle/node_lifecycle_controller.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/staging/src/k8s.io/cloud-provider/controllers/nodelifecycle/node_lifecycle_controller.go b/staging/src/k8s.io/cloud-provider/controllers/nodelifecycle/node_lifecycle_controller.go index b8a50e42cdd..0df8a4a07d7 100644 --- a/staging/src/k8s.io/cloud-provider/controllers/nodelifecycle/node_lifecycle_controller.go +++ b/staging/src/k8s.io/cloud-provider/controllers/nodelifecycle/node_lifecycle_controller.go @@ -42,7 +42,8 @@ import ( ) const ( - deleteNodeEvent = "DeletingNode" + deleteNodeEvent = "DeletingNode" + deleteNodeFailedEvent = "DeletingNodeFailed" ) var ShutdownTaint = &v1.Taint{ @@ -175,6 +176,8 @@ func (c *CloudNodeLifecycleController) MonitorNodes(ctx context.Context) { if err := c.kubeClient.CoreV1().Nodes().Delete(ctx, node.Name, metav1.DeleteOptions{}); err != nil { klog.Errorf("unable to delete node %q: %v", node.Name, err) + c.recorder.Eventf(ref, v1.EventTypeWarning, deleteNodeFailedEvent, + "Failed deleting node %s: %v", node.Name, err) } } else { // Node exists. We need to check this to get taint working in similar in all cloudproviders