From 2501a46b802c5178f6b384f7e20455fe7c523837 Mon Sep 17 00:00:00 2001 From: SataQiu Date: Wed, 14 Dec 2022 12:00:49 +0800 Subject: [PATCH] kubeadm: avoid CRI detection for phase subcommand when it's --cri-socket flag is not set --- cmd/kubeadm/app/cmd/init.go | 5 +++++ cmd/kubeadm/app/cmd/join.go | 5 +++++ cmd/kubeadm/app/cmd/phases/init/preflight.go | 1 + cmd/kubeadm/app/cmd/phases/init/uploadcerts.go | 1 - cmd/kubeadm/app/cmd/phases/init/uploadconfig.go | 1 + cmd/kubeadm/app/cmd/reset.go | 5 +++++ 6 files changed, 17 insertions(+), 1 deletion(-) diff --git a/cmd/kubeadm/app/cmd/init.go b/cmd/kubeadm/app/cmd/init.go index dc03e0490e4..f5440b6ee64 100644 --- a/cmd/kubeadm/app/cmd/init.go +++ b/cmd/kubeadm/app/cmd/init.go @@ -150,6 +150,11 @@ func newCmdInit(out io.Writer, initOptions *initOptions) *cobra.Command { // sets the data builder function, that will be used by the runner // both when running the entire workflow or single phases initRunner.SetDataInitializer(func(cmd *cobra.Command, args []string) (workflow.RunData, error) { + if cmd.Flags().Lookup(options.NodeCRISocket) == nil { + // avoid CRI detection + // assume that the command execution does not depend on CRISocket when --cri-socket flag is not set + initOptions.externalInitCfg.NodeRegistration.CRISocket = kubeadmconstants.UnknownCRISocket + } data, err := newInitData(cmd, args, initOptions, out) if err != nil { return nil, err diff --git a/cmd/kubeadm/app/cmd/join.go b/cmd/kubeadm/app/cmd/join.go index af8f06f8832..1d3e1d8e7cd 100644 --- a/cmd/kubeadm/app/cmd/join.go +++ b/cmd/kubeadm/app/cmd/join.go @@ -221,6 +221,11 @@ func newCmdJoin(out io.Writer, joinOptions *joinOptions) *cobra.Command { // sets the data builder function, that will be used by the runner // both when running the entire workflow or single phases joinRunner.SetDataInitializer(func(cmd *cobra.Command, args []string) (workflow.RunData, error) { + if cmd.Flags().Lookup(options.NodeCRISocket) == nil { + // avoid CRI detection + // assume that the command execution does not depend on CRISocket when --cri-socket flag is not set + joinOptions.externalcfg.NodeRegistration.CRISocket = kubeadmconstants.UnknownCRISocket + } data, err := newJoinData(cmd, args, joinOptions, out, kubeadmconstants.GetAdminKubeConfigPath()) if err != nil { return nil, err diff --git a/cmd/kubeadm/app/cmd/phases/init/preflight.go b/cmd/kubeadm/app/cmd/phases/init/preflight.go index ed6a1758fd6..b34cdfa0e76 100644 --- a/cmd/kubeadm/app/cmd/phases/init/preflight.go +++ b/cmd/kubeadm/app/cmd/phases/init/preflight.go @@ -46,6 +46,7 @@ func NewPreflightPhase() workflow.Phase { Run: runPreflight, InheritFlags: []string{ options.CfgPath, + options.NodeCRISocket, options.IgnorePreflightErrors, options.DryRun, }, diff --git a/cmd/kubeadm/app/cmd/phases/init/uploadcerts.go b/cmd/kubeadm/app/cmd/phases/init/uploadcerts.go index 035420cb1d8..00334fe0b4d 100644 --- a/cmd/kubeadm/app/cmd/phases/init/uploadcerts.go +++ b/cmd/kubeadm/app/cmd/phases/init/uploadcerts.go @@ -36,7 +36,6 @@ func NewUploadCertsPhase() workflow.Phase { Run: runUploadCerts, InheritFlags: []string{ options.CfgPath, - options.NodeCRISocket, options.KubeconfigPath, options.UploadCerts, options.CertificateKey, diff --git a/cmd/kubeadm/app/cmd/phases/init/uploadconfig.go b/cmd/kubeadm/app/cmd/phases/init/uploadconfig.go index 88f31cd964e..c9338f18990 100644 --- a/cmd/kubeadm/app/cmd/phases/init/uploadconfig.go +++ b/cmd/kubeadm/app/cmd/phases/init/uploadconfig.go @@ -96,6 +96,7 @@ func NewUploadConfigPhase() workflow.Phase { func getUploadConfigPhaseFlags() []string { return []string{ options.CfgPath, + options.NodeCRISocket, options.KubeconfigPath, options.DryRun, } diff --git a/cmd/kubeadm/app/cmd/reset.go b/cmd/kubeadm/app/cmd/reset.go index 724e57e205e..ab522a3835f 100644 --- a/cmd/kubeadm/app/cmd/reset.go +++ b/cmd/kubeadm/app/cmd/reset.go @@ -203,6 +203,11 @@ func newCmdReset(in io.Reader, out io.Writer, resetOptions *resetOptions) *cobra // sets the data builder function, that will be used by the runner // both when running the entire workflow or single phases resetRunner.SetDataInitializer(func(cmd *cobra.Command, args []string) (workflow.RunData, error) { + if cmd.Flags().Lookup(options.NodeCRISocket) == nil { + // avoid CRI detection + // assume that the command execution does not depend on CRISocket when --cri-socket flag is not set + resetOptions.criSocketPath = kubeadmconstants.UnknownCRISocket + } return newResetData(cmd, resetOptions, in, out) })