@@ -271,7 +271,10 @@ func handleAPIServer(starter Starter, cr cruntime.Manager, hostIP net.IP) (*kube
271
271
}
272
272
273
273
// Setup kubeadm (must come after setupKubeconfig).
274
- bs := setupKubeAdm (starter .MachineAPI , * starter .Cfg , * starter .Node , starter .Runner )
274
+ bs , err := setupKubeAdm (starter .MachineAPI , * starter .Cfg , * starter .Node , starter .Runner )
275
+ if err != nil {
276
+ return nil , nil , errors .Wrap (err , "Failed to setup kubeadm" )
277
+ }
275
278
err = bs .StartCluster (* starter .Cfg )
276
279
if err != nil {
277
280
ExitIfFatal (err , false )
@@ -554,10 +557,15 @@ func waitForCRIVersion(runner cruntime.CommandRunner, socket string, wait int, i
554
557
}
555
558
556
559
// setupKubeAdm adds any requested files into the VM before Kubernetes is started
557
- func setupKubeAdm (mAPI libmachine.API , cfg config.ClusterConfig , n config.Node , r command.Runner ) bootstrapper.Bootstrapper {
560
+ func setupKubeAdm (mAPI libmachine.API , cfg config.ClusterConfig , n config.Node , r command.Runner ) (bootstrapper.Bootstrapper , error ) {
561
+ deleteOnFailure := viper .GetBool ("delete-on-failure" )
558
562
bs , err := cluster .Bootstrapper (mAPI , viper .GetString (cmdcfg .Bootstrapper ), cfg , r )
559
563
if err != nil {
560
- exit .Error (reason .InternalBootstrapper , "Failed to get bootstrapper" , err )
564
+ klog .Errorf ("Failed to get bootstrapper: %v" , err )
565
+ if ! deleteOnFailure {
566
+ exit .Error (reason .InternalBootstrapper , "Failed to get bootstrapper" , err )
567
+ }
568
+ return nil , err
561
569
}
562
570
for _ , eo := range cfg .KubernetesConfig .ExtraOptions {
563
571
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,
566
574
// update cluster and set up certs
567
575
568
576
if err := bs .UpdateCluster (cfg ); err != nil {
569
- if errors .Is (err , cruntime .ErrContainerRuntimeNotRunning ) {
570
- exit .Error (reason .KubernetesInstallFailedRuntimeNotRunning , "Failed to update cluster" , err )
577
+ if ! deleteOnFailure {
578
+ if errors .Is (err , cruntime .ErrContainerRuntimeNotRunning ) {
579
+ exit .Error (reason .KubernetesInstallFailedRuntimeNotRunning , "Failed to update cluster" , err )
580
+ }
581
+ exit .Error (reason .KubernetesInstallFailed , "Failed to update cluster" , err )
571
582
}
572
- exit .Error (reason .KubernetesInstallFailed , "Failed to update cluster" , err )
583
+ klog .Errorf ("Failed to update cluster: %v" , err )
584
+ return nil , err
573
585
}
574
586
575
587
if err := bs .SetupCerts (cfg , n ); err != nil {
576
- exit .Error (reason .GuestCert , "Failed to setup certs" , err )
588
+ if ! deleteOnFailure {
589
+ exit .Error (reason .GuestCert , "Failed to setup certs" , err )
590
+ }
591
+ klog .Errorf ("Failed to setup certs: %v" , err )
592
+ return nil , err
577
593
}
578
594
579
- return bs
595
+ return bs , nil
580
596
}
581
597
582
598
func setupKubeconfig (h * host.Host , cc * config.ClusterConfig , n * config.Node , clusterName string ) * kubeconfig.Settings {
0 commit comments