@@ -309,9 +309,21 @@ func drainOrCordonIfNecessary(interruptionEventStore *interruptioneventstore.Sto
309
309
}
310
310
311
311
if nthConfig .CordonOnly || (drainEvent .IsRebalanceRecommendation () && ! nthConfig .EnableRebalanceDraining ) {
312
- cordonNode (node , nodeName , drainEvent , metrics , recorder )
312
+ err = cordonNode (node , nodeName , drainEvent , metrics , recorder )
313
313
} else {
314
- cordonAndDrainNode (node , nodeName , metrics , recorder , nthConfig .EnableSQSTerminationDraining )
314
+ err = cordonAndDrainNode (node , nodeName , metrics , recorder , nthConfig .EnableSQSTerminationDraining )
315
+ }
316
+
317
+ if err != nil {
318
+ podNameList , err := node .FetchPodNameList (nodeName )
319
+ drainEvent .Pods = podNameList
320
+ if err != nil {
321
+ log .Err (err ).Msgf ("Unable to fetch running pods for node '%s' " , nodeName )
322
+ }
323
+ err = node .LogPods (podNameList , nodeName )
324
+ if err != nil {
325
+ log .Err (err ).Msg ("There was a problem while trying to log all pod names on the node" )
326
+ }
315
327
}
316
328
317
329
interruptionEventStore .MarkAllAsProcessed (nodeName )
@@ -336,7 +348,7 @@ func runPreDrainTask(node node.Node, nodeName string, drainEvent *monitor.Interr
336
348
metrics .NodeActionsInc ("pre-drain" , nodeName , err )
337
349
}
338
350
339
- func cordonNode (node node.Node , nodeName string , drainEvent * monitor.InterruptionEvent , metrics observability.Metrics , recorder observability.K8sEventRecorder ) {
351
+ func cordonNode (node node.Node , nodeName string , drainEvent * monitor.InterruptionEvent , metrics observability.Metrics , recorder observability.K8sEventRecorder ) error {
340
352
err := node .Cordon (nodeName )
341
353
if err != nil {
342
354
if errors .IsNotFound (err ) {
@@ -346,23 +358,16 @@ func cordonNode(node node.Node, nodeName string, drainEvent *monitor.Interruptio
346
358
recorder .Emit (nodeName , observability .Warning , observability .CordonErrReason , observability .CordonErrMsgFmt , err .Error ())
347
359
os .Exit (1 )
348
360
}
361
+ return err
349
362
} else {
350
363
log .Info ().Str ("node_name" , nodeName ).Msg ("Node successfully cordoned" )
351
- podNameList , err := node .FetchPodNameList (nodeName )
352
- drainEvent .Pods = podNameList
353
- if err != nil {
354
- log .Err (err ).Msgf ("Unable to fetch running pods for node '%s' " , nodeName )
355
- }
356
- err = node .LogPods (podNameList , nodeName )
357
- if err != nil {
358
- log .Err (err ).Msg ("There was a problem while trying to log all pod names on the node" )
359
- }
360
364
metrics .NodeActionsInc ("cordon" , nodeName , err )
361
365
recorder .Emit (nodeName , observability .Normal , observability .CordonReason , observability .CordonMsg )
362
366
}
367
+ return nil
363
368
}
364
369
365
- func cordonAndDrainNode (node node.Node , nodeName string , metrics observability.Metrics , recorder observability.K8sEventRecorder , sqsTerminationDraining bool ) {
370
+ func cordonAndDrainNode (node node.Node , nodeName string , metrics observability.Metrics , recorder observability.K8sEventRecorder , sqsTerminationDraining bool ) error {
366
371
err := node .CordonAndDrain (nodeName )
367
372
if err != nil {
368
373
if errors .IsNotFound (err ) {
@@ -375,11 +380,13 @@ func cordonAndDrainNode(node node.Node, nodeName string, metrics observability.M
375
380
os .Exit (1 )
376
381
}
377
382
}
383
+ return err
378
384
} else {
379
385
log .Info ().Str ("node_name" , nodeName ).Msg ("Node successfully cordoned and drained" )
380
386
metrics .NodeActionsInc ("cordon-and-drain" , nodeName , err )
381
387
recorder .Emit (nodeName , observability .Normal , observability .CordonAndDrainReason , observability .CordonAndDrainMsg )
382
388
}
389
+ return nil
383
390
}
384
391
385
392
func runPostDrainTask (node node.Node , nodeName string , drainEvent * monitor.InterruptionEvent , metrics observability.Metrics , recorder observability.K8sEventRecorder ) {
0 commit comments