diff --git a/cmd/minikube/cmd/docker-env.go b/cmd/minikube/cmd/docker-env.go index 6d91ee2348..6748c08081 100644 --- a/cmd/minikube/cmd/docker-env.go +++ b/cmd/minikube/cmd/docker-env.go @@ -122,7 +122,7 @@ func isDockerActive(r command.Runner) bool { return sysinit.New(r).Active("docker") } -func restartOrExitDaemon(bin string, name string, runner command.Runner) { +func mustRestartDaemon(bin string, name string, runner command.Runner) { if err := sysinit.New(runner).Restart(bin); err != nil { exit.WithCodeT(exit.Unavailable, `The {{.service_name}} service within '{{.name}}' is not active`, out.V{"name": name, "service_name": bin}) } @@ -152,8 +152,8 @@ var dockerEnvCmd = &cobra.Command{ } if ok := isDockerActive(co.CP.Runner); !ok { - glog.Warningf("dockerd is not avtive will try to restart it...") - restartOrExitDaemon("docker", cname, co.CP.Runner) + glog.Warningf("dockerd is not active will try to restart it...") + mustRestartDaemon("docker", cname, co.CP.Runner) } var err error @@ -184,16 +184,12 @@ var dockerEnvCmd = &cobra.Command{ out, err := tryDockerConnectivity("docker", ec) if err != nil { // docker might be up but been loaded with wrong certs/config - if strings.Contains(err.Error(), "x509: certificate is valid") { - glog.Infof("dockerd inside minkube is loaded with old certs with wrong IP. output: %s error: %v", string(out), err) - } else { - glog.Warningf("couldn't connect to docker inside minikube. output: %s error: %v", string(out), err) - } - // on minikube stop, or computer restart the IP might change. - // reloads the certs to prevent #8185 + glog.Warningf("couldn't connect to docker inside minikube. output: %s error: %v", string(out), err) + // to fix issues like this #8185 glog.Infof("will try to restart dockerd service...") - restartOrExitDaemon("docker", cname, co.CP.Runner) - // TODO: use kverify to wait for apisefver instead #8241 + mustRestartDaemon("docker", cname, co.CP.Runner) + // TODO #8241: use kverify to wait for apisefver instead + // waiting for the basics like api-server to come up time.Sleep(time.Second * 3) } diff --git a/cmd/minikube/cmd/podman-env.go b/cmd/minikube/cmd/podman-env.go index 47c25c7218..725ac91961 100644 --- a/cmd/minikube/cmd/podman-env.go +++ b/cmd/minikube/cmd/podman-env.go @@ -25,11 +25,9 @@ import ( "os" "os/exec" "strings" - "time" "github.com/docker/machine/libmachine/drivers" "github.com/docker/machine/libmachine/ssh" - "github.com/golang/glog" "github.com/spf13/cobra" "k8s.io/minikube/pkg/minikube/command" "k8s.io/minikube/pkg/minikube/constants" @@ -117,11 +115,6 @@ var podmanEnvCmd = &cobra.Command{ exit.UsageT(`'none' driver does not support 'minikube podman-env' command`) } - if ok := isPodmanAvailable(co.CP.Runner); !ok { - glog.Warningf("podman service inside minikube is not active will try to restart it...") - restartOrExitDaemon("podman", cname, co.CP.Runner) - } - client, err := createExternalSSHClient(co.CP.Host.Driver) if err != nil { exit.WithError("Error getting ssh client", err) @@ -144,22 +137,6 @@ var podmanEnvCmd = &cobra.Command{ } } - out, err := tryPodmanConnectivity(ec) - if err != nil { // docker might be up but been loaded with wrong certs/config - if strings.Contains(err.Error(), "x509: certificate is valid") { - glog.Infof("dockerd inside minkube is loaded with old certs with wrong IP. output: %s error: %v", string(out), err) - } else { - glog.Warningf("couldn't connect to docker inside minikube. output: %s error: %v", string(out), err) - } - // on minikube stop, or computer restart the IP might change. - // reloads the certs to prevent #8185 - glog.Infof("will try to restart dockerd service...") - restartOrExitDaemon("docker", cname, co.CP.Runner) - // temp fix we add Wait for apiserver - // TODO: use kverify to wait for apisefver instead #8241 - time.Sleep(time.Second * 3) - } - if podmanUnset { if err := podmanUnsetScript(ec, os.Stdout); err != nil { exit.WithError("Error generating unset output", err) @@ -217,18 +194,3 @@ func init() { podmanEnvCmd.Flags().StringVar(&shell.ForceShell, "shell", "", "Force environment to be configured for a specified shell: [fish, cmd, powershell, tcsh, bash, zsh], default is auto-detect") podmanEnvCmd.Flags().BoolVarP(&podmanUnset, "unset", "u", false, "Unset variables instead of setting them") } - -// dpodmanEnvVarsList gets the necessary env variables to allow the use of minikube's podman daemon to be used in a exec.Command -func podmanEnvVarsList(ec PodmanEnvConfig) []string { - return []string{ - fmt.Sprintf("%s=%s", constants.PodmanVarlinkBridgeEnv, podmanBridge(ec.client)), - fmt.Sprintf("%s=%s", constants.MinikubeActivePodmanEnv, ec.profile), - } -} - -// tryPodmanConnectivity will try to connect to podman-env from user's POV to detect the problem if it needs reset or not -func tryPodmanConnectivity(ec PodmanEnvConfig) ([]byte, error) { - c := exec.Command("podman", "version", "--format={{.Server}}") - c.Env = append(os.Environ(), podmanEnvVarsList(ec)...) - return c.CombinedOutput() -}