Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

automated-cherry-pick-of-#97625: use default unkown sock for kubeadm cmd if cri detect is not needed #97847

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
4 changes: 2 additions & 2 deletions cmd/kubeadm/app/cmd/alpha/certs.go
Expand Up @@ -133,7 +133,7 @@ func (o *genCSRConfig) addFlagSet(flagSet *pflag.FlagSet) {
func (o *genCSRConfig) load() (err error) {
o.kubeadmConfig, err = configutil.LoadOrDefaultInitConfiguration(
o.kubeadmConfigPath,
&kubeadmapiv1beta2.InitConfiguration{},
cmdutil.DefaultInitConfiguration(),
&kubeadmapiv1beta2.ClusterConfiguration{},
)
if err != nil {
Expand Down Expand Up @@ -358,7 +358,7 @@ func getInternalCfg(cfgPath string, kubeconfigPath string, cfg kubeadmapiv1beta2
}

// Otherwise read config from --config if provided, otherwise use default configuration
return configutil.LoadOrDefaultInitConfiguration(cfgPath, &kubeadmapiv1beta2.InitConfiguration{}, &cfg)
return configutil.LoadOrDefaultInitConfiguration(cfgPath, cmdutil.DefaultInitConfiguration(), &cfg)
}

// newCmdCertsExpiration creates a new `cert check-expiration` command.
Expand Down
2 changes: 1 addition & 1 deletion cmd/kubeadm/app/cmd/alpha/kubeconfig.go
Expand Up @@ -58,7 +58,7 @@ func newCmdKubeConfigUtility(out io.Writer) *cobra.Command {
// newCmdUserKubeConfig returns sub commands for kubeconfig phase
func newCmdUserKubeConfig(out io.Writer) *cobra.Command {

initCfg := &kubeadmapiv1beta2.InitConfiguration{}
initCfg := cmdutil.DefaultInitConfiguration()
clusterCfg := &kubeadmapiv1beta2.ClusterConfiguration{}

var (
Expand Down
9 changes: 1 addition & 8 deletions cmd/kubeadm/app/cmd/config.go
Expand Up @@ -455,14 +455,7 @@ func newCmdConfigImagesList(out io.Writer, mockK8sVersion *string) *cobra.Comman

// NewImagesList returns the underlying struct for the "kubeadm config images list" command
func NewImagesList(cfgPath string, cfg *kubeadmapiv1beta2.ClusterConfiguration) (*ImagesList, error) {
// Avoid running the CRI auto-detection code as we don't need it
versionedInitCfg := &kubeadmapiv1beta2.InitConfiguration{
NodeRegistration: kubeadmapiv1beta2.NodeRegistrationOptions{
CRISocket: constants.DefaultDockerCRISocket,
},
}

initcfg, err := configutil.LoadOrDefaultInitConfiguration(cfgPath, versionedInitCfg, cfg)
initcfg, err := configutil.LoadOrDefaultInitConfiguration(cfgPath, cmdutil.DefaultInitConfiguration(), cfg)
if err != nil {
return nil, errors.Wrap(err, "could not convert cfg to an internal cfg")
}
Expand Down
10 changes: 5 additions & 5 deletions cmd/kubeadm/app/cmd/phases/init/certs.go
Expand Up @@ -154,12 +154,12 @@ func getCertPhaseFlags(name string) []string {

func getSANDescription(certSpec *certsphase.KubeadmCert) string {
//Defaulted config we will use to get SAN certs
defaultConfig := &kubeadmapiv1beta2.InitConfiguration{
LocalAPIEndpoint: kubeadmapiv1beta2.APIEndpoint{
// GetAPIServerAltNames errors without an AdvertiseAddress; this is as good as any.
AdvertiseAddress: "127.0.0.1",
},
defaultConfig := cmdutil.DefaultInitConfiguration()
// GetAPIServerAltNames errors without an AdvertiseAddress; this is as good as any.
defaultConfig.LocalAPIEndpoint = kubeadmapiv1beta2.APIEndpoint{
AdvertiseAddress: "127.0.0.1",
}

defaultInternalConfig := &kubeadmapi.InitConfiguration{}

kubeadmscheme.Scheme.Default(defaultConfig)
Expand Down
7 changes: 1 addition & 6 deletions cmd/kubeadm/app/cmd/token.go
Expand Up @@ -92,7 +92,7 @@ func newCmdToken(out io.Writer, errW io.Writer) *cobra.Command {
tokenCmd.PersistentFlags().BoolVar(&dryRun,
options.DryRun, dryRun, "Whether to enable dry-run mode or not")

cfg := &kubeadmapiv1beta2.InitConfiguration{}
cfg := cmdutil.DefaultInitConfiguration()

// Default values for the cobra help text
kubeadmscheme.Scheme.Default(cfg)
Expand Down Expand Up @@ -244,11 +244,6 @@ func RunCreateToken(out io.Writer, client clientset.Interface, cfgPath string, i
// This call returns the ready-to-use configuration based on the configuration file that might or might not exist and the default cfg populated by flags
klog.V(1).Infoln("[token] loading configurations")

// In fact, we don't do any CRI ops at all.
// This is just to force skipping the CRI detection.
// Ref: https://github.com/kubernetes/kubeadm/issues/1559
initCfg.NodeRegistration.CRISocket = kubeadmconstants.DefaultDockerCRISocket

internalcfg, err := configutil.LoadOrDefaultInitConfiguration(cfgPath, initCfg, clusterCfg)
if err != nil {
return err
Expand Down
1 change: 1 addition & 0 deletions cmd/kubeadm/app/cmd/util/BUILD
Expand Up @@ -10,6 +10,7 @@ go_library(
importpath = "k8s.io/kubernetes/cmd/kubeadm/app/cmd/util",
visibility = ["//visibility:public"],
deps = [
"//cmd/kubeadm/app/apis/kubeadm/v1beta2:go_default_library",
"//cmd/kubeadm/app/cmd/options:go_default_library",
"//cmd/kubeadm/app/constants:go_default_library",
"//cmd/kubeadm/app/util/kubeconfig:go_default_library",
Expand Down
12 changes: 12 additions & 0 deletions cmd/kubeadm/app/cmd/util/cmdutil.go
Expand Up @@ -23,6 +23,7 @@ import (

"k8s.io/client-go/tools/clientcmd"
"k8s.io/klog/v2"
kubeadmapiv1beta2 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta2"
"k8s.io/kubernetes/cmd/kubeadm/app/cmd/options"
kubeadmconstants "k8s.io/kubernetes/cmd/kubeadm/app/constants"
)
Expand Down Expand Up @@ -87,3 +88,14 @@ func AddCRISocketFlag(flagSet *pflag.FlagSet, criSocket *string) {
"Path to the CRI socket to connect. If empty kubeadm will try to auto-detect this value; use this option only if you have more than one CRI installed or if you have non-standard CRI socket.",
)
}

// DefaultInitConfiguration return default InitConfiguration. Avoid running the CRI auto-detection
// code as we don't need it.
func DefaultInitConfiguration() *kubeadmapiv1beta2.InitConfiguration {
initCfg := &kubeadmapiv1beta2.InitConfiguration{
NodeRegistration: kubeadmapiv1beta2.NodeRegistrationOptions{
CRISocket: kubeadmconstants.UnknownCRISocket, // avoid CRI detection
},
}
return initCfg
}
3 changes: 3 additions & 0 deletions cmd/kubeadm/app/constants/constants.go
Expand Up @@ -236,6 +236,9 @@ const (
// init/join time for use later. kubeadm annotates the node object with this information
AnnotationKubeadmCRISocket = "kubeadm.alpha.kubernetes.io/cri-socket"

// UnknownCRISocket defines the undetected or unknown CRI socket
UnknownCRISocket = "/var/run/unknown.sock"

// KubeadmConfigConfigMap specifies in what ConfigMap in the kube-system namespace the `kubeadm init` configuration should be stored
KubeadmConfigConfigMap = "kubeadm-config"

Expand Down
2 changes: 1 addition & 1 deletion cmd/kubeadm/app/util/config/cluster.go
Expand Up @@ -125,7 +125,7 @@ func getInitConfigurationFromCluster(kubeconfigDir string, client clientset.Inte
// 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 = "/var/run/unknown.sock"
initcfg.NodeRegistration.CRISocket = constants.UnknownCRISocket
}
return initcfg, nil
}
Expand Down