diff --git a/controller/node_controller.go b/controller/node_controller.go index 3b62c4e493..7a131bd72f 100644 --- a/controller/node_controller.go +++ b/controller/node_controller.go @@ -1238,7 +1238,17 @@ func (nc *NodeController) syncInstanceManagers(node *longhorn.Node) error { } log.Infof("Creating default instance manager %v, image: %v, dataEngine: %v", imName, defaultInstanceManagerImage, dataEngine) - if _, err := nc.createInstanceManager(node, imName, defaultInstanceManagerImage, imType, dataEngine); err != nil { + _, err = nc.createInstanceManager(node, imName, defaultInstanceManagerImage, imType, dataEngine) + if err != nil { + if apierrors.IsAlreadyExists(err) { + log.WithError(err).Warnf("Deleting instance manager %v because it cannot be obtained by selector labels", imName) + if err := nc.ds.DeleteInstanceManager(imName); err != nil { + return err + } + + nc.enqueueNode(node) + return nil + } return err } }