kubeadm: Don't error out on join with --cri-socket override

In the case where newControlPlane is true we don't go through
getNodeRegistration() and initcfg.NodeRegistration.CRISocket is empty.
This forces DetectCRISocket() to be called later on, and if there is more than
one CRI installed on the system, it will error out, while asking for the user
to provide an override for the CRI socket. Even if the user provides an
override, the call to DetectCRISocket() can happen too early and thus ignore it
(while still erroring out).
However, if newControlPlane == true, initcfg.NodeRegistration is not used at
all and it's overwritten later on.
Thus it's necessary to supply some default value, that will avoid the call to
DetectCRISocket() and as initcfg.NodeRegistration is discarded, setting
whatever value here is harmless.

Signed-off-by: Rostislav M. Georgiev <rostislavg@vmware.com>
This commit is contained in:
Rostislav M. Georgiev 2019-04-12 17:25:11 +03:00
parent bb845a715a
commit 2d4307db9f

View File

@ -93,6 +93,15 @@ func getInitConfigurationFromCluster(kubeconfigDir string, client clientset.Inte
if err := getAPIEndpoint(configMap.Data, initcfg.NodeRegistration.Name, &initcfg.LocalAPIEndpoint); err != nil {
return nil, errors.Wrap(err, "failed to getAPIEndpoint")
}
} else {
// In the case where newControlPlane is true we don't go through getNodeRegistration() and initcfg.NodeRegistration.CRISocket is empty.
// This forces DetectCRISocket() to be called later on, and if there is more than one CRI installed on the system, it will error out,
// while asking for the user to provide an override for the CRI socket. Even if the user provides an override, the call to
// DetectCRISocket() can happen too early and thus ignore it (while still erroring out).
// However, if newControlPlane == true, initcfg.NodeRegistration is not used at all and it's overwritten later on.
// Thus it's necessary to supply some default value, that will avoid the call to DetectCRISocket() and as
// initcfg.NodeRegistration is discarded, setting whatever value here is harmless.
initcfg.NodeRegistration.CRISocket = constants.DefaultDockerCRISocket
}
return initcfg, nil
}