diff --git a/cmd/minikube/cmd/start.go b/cmd/minikube/cmd/start.go index 856d0d68f4..d9d74d5127 100644 --- a/cmd/minikube/cmd/start.go +++ b/cmd/minikube/cmd/start.go @@ -855,7 +855,12 @@ func validateCPUCount(drvName string) { if driver.IsKIC((drvName)) { si, err := oci.CachedDaemonInfo(drvName) if err != nil { - out.WarningT("Failed to verify '{{.driver_name}} info', ensure your {{.driver_name}} is running healthy.", out.V{"driver_name": drvName}) + out.T(out.Confused, "Failed to verify '{{.driver_name}} info' will try again ...", out.V{"driver_name": drvName}) + si, err = oci.DaemonInfo(drvName) + if err != nil { + exit.UsageT("Ensure your {{.driver_name}} is running and is healthy.", out.V{"driver_name": driver.NameForHumans(drvName)}) + } + } if si.CPUs < 2 { if drvName == oci.Docker { diff --git a/pkg/drivers/kic/oci/info.go b/pkg/drivers/kic/oci/info.go index 98255a612f..a474b53fad 100644 --- a/pkg/drivers/kic/oci/info.go +++ b/pkg/drivers/kic/oci/info.go @@ -33,6 +33,7 @@ type SysInfo struct { } var cachedSysInfo *SysInfo +var cachedSysInfoErr *error // CachedDaemonInfo will run and return a docker/podman info only once per minikube run time. to avoid performance func CachedDaemonInfo(ociBin string) (SysInfo, error) { @@ -40,9 +41,10 @@ func CachedDaemonInfo(ociBin string) (SysInfo, error) { if cachedSysInfo == nil { si, err := DaemonInfo(ociBin) cachedSysInfo = &si + cachedSysInfoErr = &err return *cachedSysInfo, err } - return *cachedSysInfo, err + return *cachedSysInfo, *cachedSysInfoErr } // DaemonInfo returns common docker/podman daemon system info that minikube cares about