diff --git a/pkg/minikube/node/config.go b/pkg/minikube/node/config.go index 2f3dd26fb1ea..14ad22ae8f5d 100644 --- a/pkg/minikube/node/config.go +++ b/pkg/minikube/node/config.go @@ -38,6 +38,7 @@ import ( "k8s.io/minikube/pkg/minikube/exit" "k8s.io/minikube/pkg/minikube/kubeconfig" "k8s.io/minikube/pkg/minikube/localpath" + "k8s.io/minikube/pkg/minikube/machine" "k8s.io/minikube/pkg/minikube/out" "k8s.io/minikube/pkg/util/lock" ) @@ -67,7 +68,10 @@ func configureRuntimes(runner cruntime.CommandRunner, drvName string, k8s config } if !driver.IsKIC(drvName) { if err := cr.Preload(k8s.KubernetesVersion); err != nil { - glog.Infof("Failed to preload container runtime %s: %v", cr.Name(), err) + glog.Errorf("Failed to preload container runtime %s: %v, falling back to caching images", cr.Name(), err) + if err := machine.CacheImagesForBootstrapper(k8s.ImageRepository, k8s.KubernetesVersion, viper.GetString(cmdcfg.Bootstrapper)); err != nil { + exit.WithError("Failed to cache images", err) + } } } diff --git a/pkg/minikube/node/start.go b/pkg/minikube/node/start.go index d1ac337c31c6..8dfbde664360 100644 --- a/pkg/minikube/node/start.go +++ b/pkg/minikube/node/start.go @@ -59,10 +59,12 @@ func Start(mc config.ClusterConfig, n config.Node, primary bool, existingAddons mRunner, preExists, machineAPI, host := startMachine(&mc, &n) defer machineAPI.Close() + // wait for preloaded tarball to finish downloading before configuring runtimes + waitCacheRequiredImages(&cacheGroup) + // configure the runtime (docker, containerd, crio) cr := configureRuntimes(mRunner, driverName, mc.KubernetesConfig) showVersionInfo(k8sVersion, cr) - waitCacheRequiredImages(&cacheGroup) //TODO(sharifelgamal): Part out the cluster-wide operations, perhaps using the "primary" param