diff --git a/pkg/controller/cloud/node_controller.go b/pkg/controller/cloud/node_controller.go index b592ef74666..182e9bcd05d 100644 --- a/pkg/controller/cloud/node_controller.go +++ b/pkg/controller/cloud/node_controller.go @@ -256,6 +256,13 @@ func (cnc *CloudNodeController) initializeNode(node *v1.Node) { return err } + cloudTaint := getCloudTaint(curNode.Spec.Taints) + if cloudTaint == nil { + // Node object received from event had the cloud taint but was outdated, + // the node has actually already been initialized. + return nil + } + if curNode.Spec.ProviderID == "" { providerID, err := cloudprovider.GetInstanceProviderID(context.TODO(), cnc.cloud, types.NodeName(curNode.Name)) if err == nil { @@ -312,14 +319,14 @@ func (cnc *CloudNodeController) initializeNode(node *v1.Node) { // After adding, call UpdateNodeAddress to set the CloudProvider provided IPAddresses // So that users do not see any significant delay in IP addresses being filled into the node cnc.updateNodeAddress(curNode, instances) + + klog.Infof("Successfully initialized node %s with cloud provider", node.Name) return nil }) if err != nil { utilruntime.HandleError(err) return } - - klog.Infof("Successfully initialized node %s with cloud provider", node.Name) } func getCloudTaint(taints []v1.Taint) *v1.Taint {