From dc702cb3cbb2bfe371541339d66d19e451f60279 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A2=D0=BE=D0=B2=D0=B0=D1=80=D0=B8=D1=89=20=D0=BF=D1=80?= =?UTF-8?q?=D0=BE=D0=B3=D1=80=D0=B0=D0=BC=D0=BC=D0=B8=D1=81=D1=82?= <2962928213@qq.com> Date: Sat, 15 Jul 2023 23:36:24 +0800 Subject: [PATCH] feat: allow delete-on-faliure in setupKubeAdm --- pkg/minikube/node/start.go | 32 ++++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/pkg/minikube/node/start.go b/pkg/minikube/node/start.go index fd4c00921b4e..a37ef975d0fc 100644 --- a/pkg/minikube/node/start.go +++ b/pkg/minikube/node/start.go @@ -271,7 +271,10 @@ func handleAPIServer(starter Starter, cr cruntime.Manager, hostIP net.IP) (*kube } // Setup kubeadm (must come after setupKubeconfig). - bs := setupKubeAdm(starter.MachineAPI, *starter.Cfg, *starter.Node, starter.Runner) + bs, err := setupKubeAdm(starter.MachineAPI, *starter.Cfg, *starter.Node, starter.Runner) + if err != nil { + return nil, nil, errors.Wrap(err, "Failed to setup kubeadm") + } err = bs.StartCluster(*starter.Cfg) if err != nil { ExitIfFatal(err, false) @@ -554,10 +557,15 @@ func waitForCRIVersion(runner cruntime.CommandRunner, socket string, wait int, i } // setupKubeAdm adds any requested files into the VM before Kubernetes is started -func setupKubeAdm(mAPI libmachine.API, cfg config.ClusterConfig, n config.Node, r command.Runner) bootstrapper.Bootstrapper { +func setupKubeAdm(mAPI libmachine.API, cfg config.ClusterConfig, n config.Node, r command.Runner) (bootstrapper.Bootstrapper, error) { + deleteOnFailure := viper.GetBool("delete-on-failure") bs, err := cluster.Bootstrapper(mAPI, viper.GetString(cmdcfg.Bootstrapper), cfg, r) if err != nil { - exit.Error(reason.InternalBootstrapper, "Failed to get bootstrapper", err) + klog.Errorf("Failed to get bootstrapper: %v", err) + if !deleteOnFailure { + exit.Error(reason.InternalBootstrapper, "Failed to get bootstrapper", err) + } + return nil, err } for _, eo := range cfg.KubernetesConfig.ExtraOptions { out.Infof("{{.extra_option_component_name}}.{{.key}}={{.value}}", out.V{"extra_option_component_name": eo.Component, "key": eo.Key, "value": eo.Value}) @@ -566,17 +574,25 @@ func setupKubeAdm(mAPI libmachine.API, cfg config.ClusterConfig, n config.Node, // update cluster and set up certs if err := bs.UpdateCluster(cfg); err != nil { - if errors.Is(err, cruntime.ErrContainerRuntimeNotRunning) { - exit.Error(reason.KubernetesInstallFailedRuntimeNotRunning, "Failed to update cluster", err) + if !deleteOnFailure { + if errors.Is(err, cruntime.ErrContainerRuntimeNotRunning) { + exit.Error(reason.KubernetesInstallFailedRuntimeNotRunning, "Failed to update cluster", err) + } + exit.Error(reason.KubernetesInstallFailed, "Failed to update cluster", err) } - exit.Error(reason.KubernetesInstallFailed, "Failed to update cluster", err) + klog.Errorf("Failed to update cluster: %v", err) + return nil, err } if err := bs.SetupCerts(cfg, n); err != nil { - exit.Error(reason.GuestCert, "Failed to setup certs", err) + if !deleteOnFailure { + exit.Error(reason.GuestCert, "Failed to setup certs", err) + } + klog.Errorf("Failed to setup certs: %v", err) + return nil, err } - return bs + return bs, nil } func setupKubeconfig(h *host.Host, cc *config.ClusterConfig, n *config.Node, clusterName string) *kubeconfig.Settings {