in cmd/node-termination-handler.go [335:365]
func watchForCancellationEvents(cancelChan <-chan monitor.InterruptionEvent, interruptionEventStore *interruptioneventstore.Store, node *node.Node, metrics observability.Metrics, recorder observability.K8sEventRecorder) {
for {
interruptionEvent := <-cancelChan
nodeName := interruptionEvent.NodeName
eventID := interruptionEvent.EventID
interruptionEventStore.CancelInterruptionEvent(interruptionEvent.EventID)
if interruptionEventStore.ShouldUncordonNode(nodeName) {
log.Info().Msg("Uncordoning the node due to a cancellation event")
err := node.Uncordon(nodeName)
if err != nil {
log.Err(err).Msg("Uncordoning the node failed")
recorder.Emit(nodeName, observability.Warning, observability.UncordonErrReason, observability.UncordonErrMsgFmt, err.Error())
} else {
recorder.Emit(nodeName, observability.Normal, observability.UncordonReason, observability.UncordonMsg)
}
metrics.NodeActionsInc("uncordon", nodeName, eventID, err)
err = node.RemoveNTHLabels(nodeName)
if err != nil {
log.Warn().Err(err).Msg("There was an issue removing NTH labels from node")
}
err = node.RemoveNTHTaints(nodeName)
if err != nil {
log.Warn().Err(err).Msg("There was an issue removing NTH taints from node")
}
} else {
log.Info().Msg("Another interruption event is active, not uncordoning the node")
}
}
}