diff --git a/node/nodeutil/controller.go b/node/nodeutil/controller.go index cc09ab07c..f3b3205dd 100644 --- a/node/nodeutil/controller.go +++ b/node/nodeutil/controller.go @@ -251,6 +251,9 @@ type NodeConfig struct { // The default value is derived from the number of cores available. NumWorkers int + // Set the error handler for node status update failures + NodeStatusUpdateErrorHandler node.ErrorHandler + routeAttacher func(Provider, NodeConfig, corev1listers.PodLister) } @@ -365,11 +368,19 @@ func NewNode(name string, newProvider NewProviderFunc, opts ...NodeOpt) (*Node, } } + nodeControllerOpts := []node.NodeControllerOpt{ + node.WithNodeEnableLeaseV1(NodeLeaseV1Client(cfg.Client), node.DefaultLeaseDuration), + } + + if cfg.NodeStatusUpdateErrorHandler != nil { + nodeControllerOpts = append(nodeControllerOpts, node.WithNodeStatusUpdateErrorHandler(cfg.NodeStatusUpdateErrorHandler)) + } + nc, err := node.NewNodeController( np, &cfg.NodeSpec, cfg.Client.CoreV1().Nodes(), - node.WithNodeEnableLeaseV1(NodeLeaseV1Client(cfg.Client), node.DefaultLeaseDuration), + nodeControllerOpts..., ) if err != nil { return nil, errors.Wrap(err, "error creating node controller")