From 508adea11f2d68c4fd3a55f62c5b8d975369d938 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: Fri, 2 Dec 2022 20:40:03 +0800 Subject: [PATCH 1/9] feat: direct image build on containerd via docker-env --- cmd/minikube/cmd/docker-env.go | 20 ++- cmd/minikube/cmd/start.go | 28 +++++ deploy/kicbase/Dockerfile | 16 +++ deploy/kicbase/nerdctld/nerdctld.service | 11 ++ deploy/kicbase/nerdctld/nerdctld.socket | 9 ++ pkg/minikube/download/download.go | 11 +- pkg/minikube/reason/reason.go | 2 + site/content/en/docs/contrib/tests.en.md | 3 + test/integration/docker_test.go | 115 ++++++++++++++++++ .../testdata/docker-env/Dockerfile | 3 + translations/de.json | 5 + translations/es.json | 6 +- translations/fr.json | 5 + translations/ja.json | 5 + translations/ko.json | 6 +- translations/pl.json | 6 +- translations/ru.json | 6 +- translations/strings.txt | 6 +- translations/zh-CN.json | 4 +- 19 files changed, 251 insertions(+), 16 deletions(-) create mode 100644 deploy/kicbase/nerdctld/nerdctld.service create mode 100644 deploy/kicbase/nerdctld/nerdctld.socket create mode 100644 test/integration/testdata/docker-env/Dockerfile diff --git a/cmd/minikube/cmd/docker-env.go b/cmd/minikube/cmd/docker-env.go index 06e5ff7ac7..f478c4af02 100644 --- a/cmd/minikube/cmd/docker-env.go +++ b/cmd/minikube/cmd/docker-env.go @@ -25,6 +25,7 @@ import ( "net/url" "os" "os/exec" + "runtime" "strconv" "strings" "time" @@ -306,14 +307,23 @@ docker-cli install instructions: https://minikube.sigs.k8s.io/docs/tutorials/doc if len(co.Config.Nodes) > 1 { exit.Message(reason.EnvMultiConflict, `The docker-env command is incompatible with multi-node clusters. Use the 'registry' add-on: https://minikube.sigs.k8s.io/docs/handbook/registry/`) } - - if co.Config.KubernetesConfig.ContainerRuntime != constants.Docker { - exit.Message(reason.Usage, `The docker-env command is only compatible with the "docker" runtime, but this cluster was configured to use the "{{.runtime}}" runtime.`, - out.V{"runtime": co.Config.KubernetesConfig.ContainerRuntime}) + cr := co.Config.KubernetesConfig.ContainerRuntime + // nerdctld supports amd64 and arm64 + if !(cr == constants.Docker || cr == constants.Containerd && (runtime.GOARCH == "amd64" || runtime.GOARCH == "arm64")) { + exit.Message(reason.Usage, `The docker-env command is only compatible with the "docker" or "containerd"(amd64/arm64) runtime, but this cluster was configured to use the "{{.runtime}}" runtime.`, + out.V{"runtime": cr}) + } + // for the sake of docker-env command, download and start nerdctl and nerdctld + if cr == constants.Containerd { + out.WarningT("Using docker-env command with containerd-runtime is a highly experimental feature, and please provide feedback or contribute to make it better") + startNerdctld() } r := co.CP.Runner - ensureDockerd(cname, r) + + if cr == constants.Docker { + ensureDockerd(cname, r) + } d := co.CP.Host.Driver port := constants.DockerDaemonPort diff --git a/cmd/minikube/cmd/start.go b/cmd/minikube/cmd/start.go index a248c95135..5c532b5393 100644 --- a/cmd/minikube/cmd/start.go +++ b/cmd/minikube/cmd/start.go @@ -2006,4 +2006,32 @@ func getLatestPatch(majorMinorVer string) string { func isTwoDigitSemver(ver string) bool { majorMinorOnly := regexp.MustCompile(`^(?P0|[1-9]\d*)\.(?P0|[1-9]\d*)$`) return majorMinorOnly.MatchString(ver) +func startNerdctld() { + // for containerd runtime using ssh, we have installed nerdctld and nerdctl into kicbase (linux amd-64 only) + // These things will be included in the ISO/Base image in the future versions + + // copy these binaries to the path of the containerd node + co := mustload.Running(ClusterFlagValue()) + runner := co.CP.Runner + + // and set 777 to these files + if out, err := runner.RunCmd(exec.Command("sudo", "chmod", "777", "/usr/local/bin/nerdctl", "/usr/local/bin/nerdctld")); err != nil { + exit.Error(reason.StartNerdctld, fmt.Sprintf("Failed setting permission for nerdctl: %s", out.Output()), err) + } + + // sudo systemctl start nerdctld.socket + if out, err := runner.RunCmd(exec.Command("sudo", "systemctl", "start", "nerdctld.socket")); err != nil { + exit.Error(reason.StartNerdctld, fmt.Sprintf("Failed to enable nerdctld.socket: %s", out.Output()), err) + } + // sudo systemctl start nerdctld.service + if out, err := runner.RunCmd(exec.Command("sudo", "systemctl", "start", "nerdctld.service")); err != nil { + exit.Error(reason.StartNerdctld, fmt.Sprintf("Failed to enable nerdctld.service: %s", out.Output()), err) + } + + // set up environment variable on remote machine. docker client uses 'non-login & non-interactive shell' therefore the only way is to modify .bashrc file of user 'docker' + // insert this at 4th line + envSetupCommand := exec.Command("/bin/bash", "-c", "sed -i '4i export DOCKER_HOST=unix:///run/nerdctld.sock' .bashrc") + if out, err := runner.RunCmd(envSetupCommand); err != nil { + exit.Error(reason.StartNerdctld, fmt.Sprintf("Failed to set up DOCKER_HOST: %s", out.Output()), err) + } } diff --git a/deploy/kicbase/Dockerfile b/deploy/kicbase/Dockerfile index 98a1362606..1aeb2c04ee 100644 --- a/deploy/kicbase/Dockerfile +++ b/deploy/kicbase/Dockerfile @@ -49,6 +49,8 @@ ARG CRI_DOCKERD_VERSION="v0.3.3" ARG CRI_DOCKERD_COMMIT="b58acf8f78f9d7bce1241d1cddb0932e7101f278" ARG CNI_PLUGINS_VERSION="v1.3.0" ARG TARGETARCH +ARG NERDCTL_VERSION="1.0.0" +ARG NERDCTLD_VERSION="0.2.0" # copy in static files (configs, scripts) COPY deploy/kicbase/10-network-security.conf /etc/sysctl.d/10-network-security.conf @@ -59,6 +61,8 @@ COPY deploy/kicbase/containerd_docker_io_hosts.toml /etc/containerd/certs.d/dock COPY deploy/kicbase/clean-install /usr/local/bin/clean-install COPY deploy/kicbase/entrypoint /usr/local/bin/entrypoint COPY deploy/kicbase/CHANGELOG ./CHANGELOG +COPY deploy/kicbase/nerdctld/nerdctld.socket /etc/systemd/system/nerdctld.socket +COPY deploy/kicbase/nerdctld/nerdctld.service /etc/systemd/system/nerdctld.service COPY --from=auto-pause /src/cmd/auto-pause/auto-pause-${TARGETARCH} /bin/auto-pause # Install dependencies, first from apt, then from release tarballs. @@ -136,6 +140,18 @@ RUN clean-install \ # libglib2.0-0 is required for conmon, which is required for podman libglib2.0-0 +# Install nerdctl and nerdctld +RUN export ARCH=$(dpkg --print-architecture | sed 's/ppc64el/ppc64le/' | sed 's/armhf/arm-v7/') \ + && echo "Installing nerdctl and nerdctld ..." \ + && if [ "$ARCH" == "amd64" ] || [ "$ARCH" == "arm64" ]; then \ + curl -L --retry 5 --output /tmp/nerdctl.tgz "https://github.com/containerd/nerdctl/releases/download/v${NERDCTL_VERSION}/nerdctl-${NERDCTL_VERSION}-linux-$ARCH.tar.gz" &&\ + tar -C /usr/local/bin -xzvf /tmp/nerdctl.tgz &&\ + curl -L --retry 5 --output /tmp/nerdctld.tgz "https://github.com/afbjorklund/nerdctld/releases/download/v${NERDCTLD_VERSION}/nerdctld-${NERDCTLD_VERSION}-linux-$ARCH.tar.gz" &&\ + tar -C /usr/local/bin -xzvf /tmp/nerdctld.tgz &&\ + chmod 777 /usr/local/bin/nerdctl &&\ + chmod 777 /usr/local/bin/nerdctld; \ + fi + # install docker RUN sh -c "echo 'deb https://download.docker.com/linux/ubuntu jammy stable' > /etc/apt/sources.list.d/docker.list" && \ curl -L https://download.docker.com/linux/ubuntu/gpg -o docker.key && \ diff --git a/deploy/kicbase/nerdctld/nerdctld.service b/deploy/kicbase/nerdctld/nerdctld.service new file mode 100644 index 0000000000..16781e7404 --- /dev/null +++ b/deploy/kicbase/nerdctld/nerdctld.service @@ -0,0 +1,11 @@ +[Unit] +Description=nerdctld +Requires=nerdctld.socket containerd.service +After=nerdctld.socket containerd.service + +[Service] +Type=notify +Environment=CONTAINERD_NAMESPACE=k8s.io +ExecStart=nerdctld --addr fd:// +[Install] +WantedBy=multi-user.target \ No newline at end of file diff --git a/deploy/kicbase/nerdctld/nerdctld.socket b/deploy/kicbase/nerdctld/nerdctld.socket new file mode 100644 index 0000000000..52d5772038 --- /dev/null +++ b/deploy/kicbase/nerdctld/nerdctld.socket @@ -0,0 +1,9 @@ +[Unit] +Description=nerdctld + +[Socket] +ListenStream=/var/run/nerdctld.sock +SocketMode=0666 + +[Install] +WantedBy=sockets.target \ No newline at end of file diff --git a/pkg/minikube/download/download.go b/pkg/minikube/download/download.go index cfc4a9cb59..e1adefeb39 100644 --- a/pkg/minikube/download/download.go +++ b/pkg/minikube/download/download.go @@ -78,11 +78,12 @@ func download(src, dst string) error { } tmpDst := dst + ".download" client := &getter.Client{ - Src: src, - Dst: tmpDst, - Dir: false, - Mode: getter.ClientModeFile, - Options: clientOptions, + Src: src, + Dst: tmpDst, + Dir: false, + Mode: getter.ClientModeFile, + Options: clientOptions, + Decompressors: map[string]getter.Decompressor{}, Getters: map[string]getter.Getter{ "file": &getter.FileGetter{Copy: false}, "http": &getter.HttpGetter{Netrc: false}, diff --git a/pkg/minikube/reason/reason.go b/pkg/minikube/reason/reason.go index 9cdf4c4545..170953f1e7 100644 --- a/pkg/minikube/reason/reason.go +++ b/pkg/minikube/reason/reason.go @@ -95,6 +95,8 @@ var ( InternalCacheLoad = Kind{ID: "MK_CACHE_LOAD", ExitCode: ExProgramError} // minikube failed to load a Docker Machine CommandRunner InternalCommandRunner = Kind{ID: "MK_COMMAND_RUNNER", ExitCode: ExProgramError} + // minikube failed to start nerdctld + StartNerdctld = Kind{ID: "MK_START_NERDCTLD", ExitCode: ExProgramError} // minikube failed to generate shell command completion for a supported shell InternalCompletion = Kind{ID: "MK_COMPLETION", ExitCode: ExProgramError} // minikube failed to set an internal config value diff --git a/site/content/en/docs/contrib/tests.en.md b/site/content/en/docs/contrib/tests.en.md index 5c6c113e76..1b54b2bfad 100644 --- a/site/content/en/docs/contrib/tests.en.md +++ b/site/content/en/docs/contrib/tests.en.md @@ -79,6 +79,9 @@ makes sure the --force-systemd flag worked with the cri-o container runtime ## TestForceSystemdEnv makes sure the MINIKUBE_FORCE_SYSTEMD environment variable works just as well as the --force-systemd flag +## TestDockerEnvContainerd +makes sure that minikube docker-env command works when the runtime is containerd + ## TestKVMDriverInstallOrUpdate makes sure our docker-machine-driver-kvm2 binary can be installed properly diff --git a/test/integration/docker_test.go b/test/integration/docker_test.go index 0d1ebea891..f0dd628761 100644 --- a/test/integration/docker_test.go +++ b/test/integration/docker_test.go @@ -20,10 +20,16 @@ package integration import ( "context" + "fmt" "os" "os/exec" + "regexp" + "runtime" "strings" "testing" + "time" + + "k8s.io/minikube/pkg/minikube/constants" ) // TestDockerFlags makes sure the --docker-env and --docker-opt parameters are respected @@ -158,3 +164,112 @@ func TestForceSystemdEnv(t *testing.T) { validateContainerdSystemd(ctx, t, profile) } } + +// TestDockerEnvContainerd makes sure that minikube docker-env command works when the runtime is containerd +func TestDockerEnvContainerd(t *testing.T) { + t.Log("running with", ContainerRuntime(), DockerDriver(), runtime.GOOS, runtime.GOARCH) + if ContainerRuntime() != constants.Containerd || !DockerDriver() || runtime.GOOS != "linux" || runtime.GOARCH != "amd64" { + t.Skip("skipping: TestDockerEnvContainerd can only be run with the containerd amd64 runtime") + } + profile := UniqueProfileName("dockerenv") + ctx, cancel := context.WithTimeout(context.Background(), Minutes(30)) + defer CleanupWithLogs(t, profile, cancel) + + // start the minikube with containerd runtime + args := append([]string{"start", "-p", profile}, StartArgs()...) + cmd := exec.CommandContext(ctx, Target(), args...) + startResult, err := Run(t, cmd) + if err != nil { + t.Errorf("failed to start minikube with args: %q : %v", startResult.Command(), err) + } + time.Sleep(time.Second * 10) + + // if we are in a shell, we need to run 'ssh-agent bash' to enable the ssh-agent + // but if we are in an integration test, we don't have a bash, so we need to get the environment variables set by ssh-agent, and use them in the following tests + result, err := Run(t, exec.CommandContext(ctx, "ssh-agent")) + if err != nil { + t.Errorf("failed to execute ssh-agent bash, error: %v, output: %s", err, result.Output()) + } + output := result.Output() + // get SSH_AUTH_SOCK + groups := regexp.MustCompile(`SSH_AUTH_SOCK=(\S*);`).FindStringSubmatch(output) + if len(groups) < 2 { + t.Errorf("failed to acquire SSH_AUTH_SOCK, output is %s", output) + } + sshAuthSock := groups[1] + // get SSH_AGENT_PID + groups = regexp.MustCompile(`SSH_AGENT_PID=(\S*);`).FindStringSubmatch(output) + if len(groups) < 2 { + t.Errorf("failed to acquire SSH_AUTH_SOCK, output is %s", output) + } + sshAgentPid := groups[1] + + // execute 'minikube docker-env --ssh-host --ssh-add' and extract the 'DOCKER_HOST' environment value + cmd = exec.CommandContext(ctx, "/bin/bash", "-c", fmt.Sprintf("SSH_AUTH_SOCK=%s SSH_AGENT_PID=%s %s docker-env --ssh-host --ssh-add -p %s", sshAuthSock, sshAgentPid, Target(), profile)) + result, err = Run(t, cmd) + if err != nil { + t.Errorf("failed to execute minikube docker-env --ssh-host --ssh-add, error: %v, output: %s", err, result.Output()) + } + + output = result.Output() + groups = regexp.MustCompile(`DOCKER_HOST="(\S*)"`).FindStringSubmatch(output) + if len(groups) < 2 { + t.Errorf("failed to acquire SSH_AUTH_SOCK, output is %s", output) + } + dockerHost := groups[1] + segments := strings.Split(dockerHost, ":") + port := segments[2] + + // clear remaining keys + clearResult, err := Run(t, exec.CommandContext(ctx, "ssh-keygen", "-R", "[127.0.0.1]:"+port)) + if err != nil { + t.Logf("failed to clear duplicate keys: %q : %v", clearResult.Command(), err) + } + + // execute 'minikube ssh-host --append-known' + result, err = Run(t, exec.CommandContext(ctx, Target(), "ssh-host", "--append-known", "-p", profile)) + if err != nil { + t.Errorf("failed to execute 'minikube ssh-host --append-known', error: %v, output: %s", err, result.Output()) + } + + cmd = exec.CommandContext(ctx, "/bin/bash", "-c", fmt.Sprintf("SSH_AUTH_SOCK=%s SSH_AGENT_PID=%s DOCKER_HOST=%s docker version", sshAuthSock, sshAgentPid, dockerHost)) + + result, err = Run(t, cmd) + if err != nil { + t.Fatalf("failed to execute 'docker version',error: %v, output:%s", err, result.Output()) + } + // if we are really connecting to nerdctld inside node, docker version output should have word 'nerdctl' + // If everything works properly, in the output of `docker version` you should be able to see something like + /* + Server: + nerdctl: + Version: 1.0.0 + buildctl: + Version: 0.10.3 + GitCommit: c8d25d9a103b70dc300a4fd55e7e576472284e31 + containerd: + Version: 1.6.10 + GitCommit: 770bd0108c32f3fb5c73ae1264f7e503fe7b2661 + */ + if !strings.Contains(result.Output(), "nerdctl") { + t.Fatal("failed to detect keyword 'nerdctl' in output of docker version") + } + + // now try to build an image + cmd = exec.CommandContext(ctx, "/bin/bash", "-c", fmt.Sprintf("SSH_AUTH_SOCK=%s SSH_AGENT_PID=%s DOCKER_HOST=%s DOCKER_BUILDKIT=0 docker build -t local/minikube-dockerenv-conatinerd-test:latest testdata/docker-env", sshAuthSock, sshAgentPid, dockerHost)) + result, err = Run(t, cmd) + if err != nil { + t.Errorf("failed to build images, error: %v, output:%s", err, result.Output()) + } + + // and check whether that image is really available + cmd = exec.CommandContext(ctx, "/bin/bash", "-c", fmt.Sprintf("SSH_AUTH_SOCK=%s SSH_AGENT_PID=%s DOCKER_HOST=%s docker image ls", sshAuthSock, sshAgentPid, dockerHost)) + result, err = Run(t, cmd) + if err != nil { + t.Fatalf("failed to execute 'docker image ls',error: %v, output:%s", err, result.Output()) + } + fmt.Println(result.Output()) + if !strings.Contains(result.Output(), "local/minikube-dockerenv-conatinerd-test") { + t.Fatal("failed to detect image'local/minikube-dockerenv-conatinerd-test' in output of docker image ls") + } +} \ No newline at end of file diff --git a/test/integration/testdata/docker-env/Dockerfile b/test/integration/testdata/docker-env/Dockerfile new file mode 100644 index 0000000000..b5e77a7d51 --- /dev/null +++ b/test/integration/testdata/docker-env/Dockerfile @@ -0,0 +1,3 @@ +FROM alpine:latest + +CMD [ "/bin/bash" ] \ No newline at end of file diff --git a/translations/de.json b/translations/de.json index 0ce5fc208f..bd39297a5a 100644 --- a/translations/de.json +++ b/translations/de.json @@ -238,6 +238,8 @@ "Error starting mount": "Fehler beim Starten von mount", "Error while setting kubectl current context : {{.error}}": "Fehler beim Setzen des aktuellen Kontextes für kubectl : {{.error}}", "Error while setting kubectl current context: {{.error}}": "Fehler beim Setzen des aktuellen Kontextes für kubectl: {{.error}}", + "Error with downloading nerdctl": "", + "Error with downloading nerdctld": "", "Error with ssh-add": "Fehler mit ssh-add", "Error writing mount pid": "Fehler beim Schreiben der mount pid", "Error: You have selected Kubernetes v{{.new}}, but the existing cluster for your profile is running Kubernetes v{{.old}}. Non-destructive downgrades are not supported, but you can proceed by performing one of the following options:\n* Recreate the cluster using Kubernetes v{{.new}}: Run \"minikube delete {{.profile}}\", then \"minikube start {{.profile}} --kubernetes-version={{.new}}\"\n* Create a second cluster with Kubernetes v{{.new}}: Run \"minikube start -p \u003cnew name\u003e --kubernetes-version={{.new}}\"\n* Reuse the existing cluster with Kubernetes v{{.old}} or newer: Run \"minikube start {{.profile}} --kubernetes-version={{.old}}": "Fehler: Sie haben Kubernetes v{{.new}} ausgewählt, aber auf dem vorhandenen Cluster für Ihr Profil wird Kubernetes v{{.old}} ausgeführt. Zerstörungsfreie Downgrades werden nicht unterstützt. Sie können jedoch mit einer der folgenden Optionen fortfahren:\n* Erstellen Sie den Cluster mit Kubernetes v{{.new}} neu: Führen Sie \"minikube delete {{.profile}}\" und dann \"minikube start {{.profile}} - kubernetes-version = {{.new}}\" aus.\n* Erstellen Sie einen zweiten Cluster mit Kubernetes v{{.new}}: Führen Sie \"minikube start -p \u003cnew name\u003e --kubernetes-version = {{.new}}\" aus.\n* Verwenden Sie den vorhandenen Cluster mit Kubernetes v {{.old}} oder höher: Führen Sie \"minikube start {{.profile}} --kubernetes-version = {{.old}}\" aus.", @@ -250,6 +252,8 @@ "External Adapter on which external switch will be created if no external switch is found. (hyperv driver only)": "Externer Adapter, auf dem der externe Switch erzeugt wird, wenn kein externer Switch gefunden wurde. (nur hyperv Treiber)", "Fail check if container paused": "Schlägt fehl, wenn der Container pausiert ist", "Failed removing pid from pidfile: {{.error}}": "", + "Fail to copy file nerctl": "", + "Fail to copy file nerctld": "", "Failed runtime": "Runtime fehlgeschlagen", "Failed to build image": "Bau des Images fehlgeschlagen", "Failed to cache and load images": "Cachen und laden der Images fehlgeschlagen", @@ -712,6 +716,7 @@ "The cri socket path to be used": "Der zu verwendende Cri-Socket-Pfad", "The cri socket path to be used.": "Der zu verwendende Cri-Socket-Pfad.", "The docker-env command is incompatible with multi-node clusters. Use the 'registry' add-on: https://minikube.sigs.k8s.io/docs/handbook/registry/": "Der docker-env Befehl ist inkompatibel mit multi-node Clustern. Bitte verwende das 'registry' Addon: https://minikube.sigs.k8s.io/docs/handbook/registry/", + "The docker-env command is only compatible with the \"docker\" runtime or \"containerd\" runtime, but this cluster was configured to use the \"{{.runtime}}\" runtime.": "", "The docker-env command is only compatible with the \"docker\" runtime, but this cluster was configured to use the \"{{.runtime}}\" runtime.": "Der docker-env Befehl ist nur mit der \"Docker\" Laufzeitsumgebung kompatibel, aber dieser Cluster ist für die\"{{.runtime}}\" Laufzeitumgebung konfiguriert.", "The driver '{{.driver}}' is not supported on {{.os}}/{{.arch}}": "Der Treiber '{{.driver}}' wird auf {{.os}}/{{.arch}} nicht unterstützt", "The existing \"{{.name}}\" cluster was created using the \"{{.old}}\" driver, which is incompatible with requested \"{{.new}}\" driver.": "Der existierende \"{{.name}}\" Cluster wurde mit dem alten Treiber \"{{.old}}\" erstellt, welcher inkompatibel ist mit dem Treiber \"{{.new}}\".", diff --git a/translations/es.json b/translations/es.json index e2f0d236b2..a140fbf5d7 100644 --- a/translations/es.json +++ b/translations/es.json @@ -247,6 +247,8 @@ "Error starting mount": "No se ha podido iniciar el montaje", "Error while setting kubectl current context : {{.error}}": "Error mientras se configuraba el contexto actual de kubectl: {{.error}}", "Error while setting kubectl current context: {{.error}}": "Error mientras se configuraba el contexto actual de kubectl: {{.error}}", + "Error with downloading nerdctl": "", + "Error with downloading nerdctld": "", "Error with ssh-add": "Error al ejecutar ssh-add", "Error writing mount pid": "No se ha podido escribir el pid de montaje", "Error: You have selected Kubernetes v{{.new}}, but the existing cluster for your profile is running Kubernetes v{{.old}}. Non-destructive downgrades are not supported, but you can proceed by performing one of the following options:\n* Recreate the cluster using Kubernetes v{{.new}}: Run \"minikube delete {{.profile}}\", then \"minikube start {{.profile}} --kubernetes-version={{.new}}\"\n* Create a second cluster with Kubernetes v{{.new}}: Run \"minikube start -p \u003cnew name\u003e --kubernetes-version={{.new}}\"\n* Reuse the existing cluster with Kubernetes v{{.old}} or newer: Run \"minikube start {{.profile}} --kubernetes-version={{.old}}": "Error: Has seleccionado Kubernetes {{.new}}, pero el clúster de tu perfil utiliza la versión {{.old}}. No se puede cambiar a una versión inferior sin eliminar todos los datos y recursos pertinentes, pero dispones de las siguientes opciones para continuar con la operación:\n* Volver a crear el clúster con Kubernetes {{.new}}: ejecuta \"minikube delete {{.profile}}\" y, luego, \"minikube start {{.profile}} --kubernetes-version={{.new}}\"\n* Crear un segundo clúster con Kubernetes {{.new}}: ejecuta \"minikube start -p \u003cnuevo nombre\u003e --kubernetes-version={{.new}}\"\n* Reutilizar el clúster actual con Kubernetes {{.old}} o una versión posterior: ejecuta \"minikube start {{.profile}} --kubernetes-version={{.old}}", @@ -259,6 +261,8 @@ "External Adapter on which external switch will be created if no external switch is found. (hyperv driver only)": "", "Fail check if container paused": "", "Failed removing pid from pidfile: {{.error}}": "", + "Fail to copy file nerctl": "", + "Fail to copy file nerctld": "", "Failed runtime": "", "Failed to build image": "No se pudo construir la imagen", "Failed to cache and load images": "", @@ -711,7 +715,7 @@ "The cri socket path to be used": "La ruta del socket de cri", "The cri socket path to be used.": "", "The docker-env command is incompatible with multi-node clusters. Use the 'registry' add-on: https://minikube.sigs.k8s.io/docs/handbook/registry/": "", - "The docker-env command is only compatible with the \"docker\" runtime, but this cluster was configured to use the \"{{.runtime}}\" runtime.": "", + "The docker-env command is only compatible with the \"docker\" runtime or \"containerd\" runtime, but this cluster was configured to use the \"{{.runtime}}\" runtime.": "", "The driver '{{.driver}}' is not supported on {{.os}}/{{.arch}}": "El controlador \"{{.driver}}\" no se puede utilizar en {{.os}}/{{.arch}}", "The existing \"{{.name}}\" cluster was created using the \"{{.old}}\" driver, which is incompatible with requested \"{{.new}}\" driver.": "", "The existing node configuration appears to be corrupt. Run 'minikube delete'": "", diff --git a/translations/fr.json b/translations/fr.json index 75e692410a..95fd5b9d93 100644 --- a/translations/fr.json +++ b/translations/fr.json @@ -236,6 +236,8 @@ "Error starting mount": "Erreur lors du démarrage du montage", "Error while setting kubectl current context : {{.error}}": "Erreur lors de la définition du contexte actuel de kubectl : {{.error}}", "Error while setting kubectl current context: {{.error}}": "Erreur lors de la définition du contexte actuel de kubectl : {{.error}}", + "Error with downloading nerdctl": "", + "Error with downloading nerdctld": "", "Error with ssh-add": "Erreur avec ssh-add", "Error writing mount pid": "Erreur lors de l'écriture du pid de montage", "Examples": "Exemples", @@ -246,6 +248,8 @@ "External Adapter on which external switch will be created if no external switch is found. (hyperv driver only)": "L'adaptateur externe sur lequel un commutateur externe sera créé si aucun commutateur externe n'est trouvé. (pilote hyperv uniquement)", "Fail check if container paused": "Échec de la vérification si le conteneur est en pause", "Failed removing pid from pidfile: {{.error}}": "", + "Fail to copy file nerctl": "", + "Fail to copy file nerctld": "", "Failed runtime": "Échec de l'exécution", "Failed to build image": "Échec de la création de l'image", "Failed to cache and load images": "Échec de la mise en cache et du chargement des images", @@ -697,6 +701,7 @@ "The cri socket path to be used.": "Le chemin de socket cri à utiliser.", "The default network for QEMU will change from 'user' to 'socket_vmnet' in a future release": "Le réseau par défaut pour QEMU passera de 'user' à 'socket_vmnet' dans une version future", "The docker-env command is incompatible with multi-node clusters. Use the 'registry' add-on: https://minikube.sigs.k8s.io/docs/handbook/registry/": "La commande docker-env est incompatible avec les clusters multi-nœuds. Utilisez le module 'registry' : https://minikube.sigs.k8s.io/docs/handbook/registry/", + "The docker-env command is only compatible with the \"docker\" runtime or \"containerd\" runtime, but this cluster was configured to use the \"{{.runtime}}\" runtime.": "", "The docker-env command is only compatible with the \"docker\" runtime, but this cluster was configured to use the \"{{.runtime}}\" runtime.": "La commande docker-env n'est compatible qu'avec le runtime \"docker\", mais ce cluster a été configuré pour utiliser le runtime \"{{.runtime}}\".", "The driver '{{.driver}}' is not supported on {{.os}}/{{.arch}}": "Le pilote \"{{.driver}}\" n'est pas compatible avec {{.os}}/{{.arch}}.", "The existing \"{{.name}}\" cluster was created using the \"{{.old}}\" driver, which is incompatible with requested \"{{.new}}\" driver.": "Le cluster \"{{.name}}\" existant a été créé à l'aide du pilote \"{{.old}}\", qui est incompatible avec le pilote \"{{.new}}\" demandé.", diff --git a/translations/ja.json b/translations/ja.json index dc3781d03a..840618fcf2 100644 --- a/translations/ja.json +++ b/translations/ja.json @@ -226,6 +226,8 @@ "Error starting mount": "マウントを開始中にエラーが発生しました", "Error while setting kubectl current context : {{.error}}": "kubectl の現在のコンテキストの設定中にエラーが発生しました : {{.error}}", "Error while setting kubectl current context: {{.error}}": "kubectl の現在のコンテキストの設定中にエラーが発生しました: {{.error}}", + "Error with downloading nerdctl": "", + "Error with downloading nerdctld": "", "Error with ssh-add": "ssh-add でエラーが発生しました", "Error writing mount pid": "マウントした pid を書き込み中にエラーが発生しました", "Examples": "例", @@ -236,6 +238,8 @@ "External Adapter on which external switch will be created if no external switch is found. (hyperv driver only)": "外部スイッチが見つからない場合に、外部スイッチが作成される外部アダプター (hyperv ドライバーのみ)。", "Fail check if container paused": "コンテナーが一時停止しているかどうかのチェックに失敗しました", "Failed removing pid from pidfile: {{.error}}": "", + "Fail to copy file nerctl": "", + "Fail to copy file nerctld": "", "Failed runtime": "ランタイムが失敗しました", "Failed to build image": "イメージのビルドに失敗しました", "Failed to cache and load images": "イメージのキャッシュとロードに失敗しました", @@ -669,6 +673,7 @@ "The control plane node must be running for this command": "このコマンドではコントロールプレーンノードが実行中でなければなりません", "The cri socket path to be used.": "使用される CRI ソケットパス。", "The docker-env command is incompatible with multi-node clusters. Use the 'registry' add-on: https://minikube.sigs.k8s.io/docs/handbook/registry/": "docker-env コマンドはマルチノードクラスターと互換性がありません。'registry' アドオンを使用してください: https://minikube.sigs.k8s.io/docs/handbook/registry/", + "The docker-env command is only compatible with the \"docker\" runtime or \"containerd\" runtime, but this cluster was configured to use the \"{{.runtime}}\" runtime.": "", "The docker-env command is only compatible with the \"docker\" runtime, but this cluster was configured to use the \"{{.runtime}}\" runtime.": "docker-env コマンドは「docker」ランタイムとだけ互換性がありますが、このクラスターは「{{.runtime}}」ランタイムを使用するよう設定されています。", "The driver '{{.driver}}' is not supported on {{.os}}/{{.arch}}": "'{{.driver}}' ドライバーは {{.os}}/{{.arch}} に対応していません", "The existing \"{{.name}}\" cluster was created using the \"{{.old}}\" driver, which is incompatible with requested \"{{.new}}\" driver.": "既存の「{{.name}}」クラスターは、(要求された「{{.new}}」ドライバーとは互換性のない)「{{.old}}」ドライバーを使用して作成されました。 ", diff --git a/translations/ko.json b/translations/ko.json index e9430c7928..be11090556 100644 --- a/translations/ko.json +++ b/translations/ko.json @@ -258,6 +258,8 @@ "Error starting node": "노드 시작 오류", "Error while setting kubectl current context : {{.error}}": "kubectl current context 설정 오류 : {{.error}}", "Error while setting kubectl current context: {{.error}}": "", + "Error with downloading nerdctl": "", + "Error with downloading nerdctld": "", "Error with ssh-add": "", "Error writing mount pid": "", "Examples": "예시", @@ -268,6 +270,8 @@ "External Adapter on which external switch will be created if no external switch is found. (hyperv driver only)": "", "Fail check if container paused": "", "Failed removing pid from pidfile: {{.error}}": "", + "Fail to copy file nerctl": "", + "Fail to copy file nerctld": "", "Failed runtime": "런타임이 실패하였습니다", "Failed to build image": "", "Failed to cache ISO": "ISO 캐싱에 실패하였습니다", @@ -716,7 +720,7 @@ "The control plane node must be running for this command": "컨트롤 플레인 노드는 실행 상태여야 합니다", "The cri socket path to be used.": "", "The docker-env command is incompatible with multi-node clusters. Use the 'registry' add-on: https://minikube.sigs.k8s.io/docs/handbook/registry/": "", - "The docker-env command is only compatible with the \"docker\" runtime, but this cluster was configured to use the \"{{.runtime}}\" runtime.": "", + "The docker-env command is only compatible with the \"docker\" runtime or \"containerd\" runtime, but this cluster was configured to use the \"{{.runtime}}\" runtime.": "", "The driver '{{.driver}}' is not supported on {{.os}}/{{.arch}}": "", "The existing \"{{.name}}\" cluster was created using the \"{{.old}}\" driver, which is incompatible with requested \"{{.new}}\" driver.": "", "The existing node configuration appears to be corrupt. Run 'minikube delete'": "", diff --git a/translations/pl.json b/translations/pl.json index 9ef2617663..8ba14fe8d4 100644 --- a/translations/pl.json +++ b/translations/pl.json @@ -248,6 +248,8 @@ "Error starting mount": "", "Error while setting kubectl current context : {{.error}}": "Błąd podczas ustawiania kontekstu kubectl: {{.error}}", "Error while setting kubectl current context: {{.error}}": "", + "Error with downloading nerdctl": "", + "Error with downloading nerdctld": "", "Error with ssh-add": "", "Error writing mount pid": "", "Error: You have selected Kubernetes v{{.new}}, but the existing cluster for your profile is running Kubernetes v{{.old}}. Non-destructive downgrades are not supported, but you can proceed by performing one of the following options:\n* Recreate the cluster using Kubernetes v{{.new}}: Run \"minikube delete {{.profile}}\", then \"minikube start {{.profile}} --kubernetes-version={{.new}}\"\n* Create a second cluster with Kubernetes v{{.new}}: Run \"minikube start -p \u003cnew name\u003e --kubernetes-version={{.new}}\"\n* Reuse the existing cluster with Kubernetes v{{.old}} or newer: Run \"minikube start {{.profile}} --kubernetes-version={{.old}}": "Erreur : Vous avez sélectionné Kubernetes v{{.new}}, mais le cluster existent pour votre profil exécute Kubernetes v{{.old}}. Les rétrogradations non-destructives ne sont pas compatibles. Toutefois, vous pouvez poursuivre le processus en réalisant l'une des trois actions suivantes :\n* Créer à nouveau le cluster en utilisant Kubernetes v{{.new}} – exécutez \"minikube delete {{.profile}}\", puis \"minikube start {{.profile}} --kubernetes-version={{.new}}\".\n* Créer un second cluster avec Kubernetes v{{.new}} – exécutez \"minikube start -p \u003cnew name\u003e --kubernetes-version={{.new}}\".\n* Réutiliser le cluster existent avec Kubernetes v{{.old}} ou version ultérieure – exécutez \"minikube start {{.profile}} --kubernetes-version={{.old}}\".", @@ -259,6 +261,8 @@ "External Adapter on which external switch will be created if no external switch is found. (hyperv driver only)": "", "Fail check if container paused": "", "Failed removing pid from pidfile: {{.error}}": "", + "Fail to copy file nerctl": "", + "Fail to copy file nerctld": "", "Failed runtime": "", "Failed to build image": "", "Failed to cache and load images": "", @@ -724,7 +728,7 @@ "The cri socket path to be used.": "", "The docker service is currently not active": "Serwis docker jest nieaktywny", "The docker-env command is incompatible with multi-node clusters. Use the 'registry' add-on: https://minikube.sigs.k8s.io/docs/handbook/registry/": "", - "The docker-env command is only compatible with the \"docker\" runtime, but this cluster was configured to use the \"{{.runtime}}\" runtime.": "", + "The docker-env command is only compatible with the \"docker\" runtime or \"containerd\" runtime, but this cluster was configured to use the \"{{.runtime}}\" runtime.": "", "The driver '{{.driver}}' is not supported on {{.os}}/{{.arch}}": "Sterownik '{{.driver}} jest niewspierany przez system {{.os}}/{{.arch}}", "The existing \"{{.name}}\" cluster was created using the \"{{.old}}\" driver, which is incompatible with requested \"{{.new}}\" driver.": "", "The existing node configuration appears to be corrupt. Run 'minikube delete'": "", diff --git a/translations/ru.json b/translations/ru.json index a9b5e405cf..835c64313c 100644 --- a/translations/ru.json +++ b/translations/ru.json @@ -223,6 +223,8 @@ "Error starting mount": "", "Error while setting kubectl current context : {{.error}}": "", "Error while setting kubectl current context: {{.error}}": "", + "Error with downloading nerdctl": "", + "Error with downloading nerdctld": "", "Error with ssh-add": "", "Error writing mount pid": "", "Examples": "", @@ -233,6 +235,8 @@ "External Adapter on which external switch will be created if no external switch is found. (hyperv driver only)": "", "Fail check if container paused": "", "Failed removing pid from pidfile: {{.error}}": "", + "Fail to copy file nerctl": "", + "Fail to copy file nerctld": "", "Failed runtime": "", "Failed to build image": "", "Failed to cache and load images": "", @@ -658,7 +662,7 @@ "The control plane node must be running for this command": "", "The cri socket path to be used.": "", "The docker-env command is incompatible with multi-node clusters. Use the 'registry' add-on: https://minikube.sigs.k8s.io/docs/handbook/registry/": "", - "The docker-env command is only compatible with the \"docker\" runtime, but this cluster was configured to use the \"{{.runtime}}\" runtime.": "", + "The docker-env command is only compatible with the \"docker\" runtime or \"containerd\" runtime, but this cluster was configured to use the \"{{.runtime}}\" runtime.": "", "The driver '{{.driver}}' is not supported on {{.os}}/{{.arch}}": "", "The existing \"{{.name}}\" cluster was created using the \"{{.old}}\" driver, which is incompatible with requested \"{{.new}}\" driver.": "", "The existing node configuration appears to be corrupt. Run 'minikube delete'": "", diff --git a/translations/strings.txt b/translations/strings.txt index 8170ac573e..0e254ba656 100644 --- a/translations/strings.txt +++ b/translations/strings.txt @@ -223,6 +223,8 @@ "Error starting mount": "", "Error while setting kubectl current context : {{.error}}": "", "Error while setting kubectl current context: {{.error}}": "", + "Error with downloading nerdctl": "", + "Error with downloading nerdctld": "", "Error with ssh-add": "", "Error writing mount pid": "", "Examples": "", @@ -233,6 +235,8 @@ "External Adapter on which external switch will be created if no external switch is found. (hyperv driver only)": "", "Fail check if container paused": "", "Failed removing pid from pidfile: {{.error}}": "", + "Fail to copy file nerctl": "", + "Fail to copy file nerctld": "", "Failed runtime": "", "Failed to build image": "", "Failed to cache and load images": "", @@ -658,7 +662,7 @@ "The control plane node must be running for this command": "", "The cri socket path to be used.": "", "The docker-env command is incompatible with multi-node clusters. Use the 'registry' add-on: https://minikube.sigs.k8s.io/docs/handbook/registry/": "", - "The docker-env command is only compatible with the \"docker\" runtime, but this cluster was configured to use the \"{{.runtime}}\" runtime.": "", + "The docker-env command is only compatible with the \"docker\" runtime or \"containerd\" runtime, but this cluster was configured to use the \"{{.runtime}}\" runtime.": "", "The driver '{{.driver}}' is not supported on {{.os}}/{{.arch}}": "", "The existing \"{{.name}}\" cluster was created using the \"{{.old}}\" driver, which is incompatible with requested \"{{.new}}\" driver.": "", "The existing node configuration appears to be corrupt. Run 'minikube delete'": "", diff --git a/translations/zh-CN.json b/translations/zh-CN.json index 825051745c..e93eddc652 100644 --- a/translations/zh-CN.json +++ b/translations/zh-CN.json @@ -301,6 +301,8 @@ "Error unsetting shell variables": "取消设置 shell 变量时出错", "Error while setting kubectl current context : {{.error}}": "设置 kubectl 上下文时出错 :{{.error}}", "Error while setting kubectl current context: {{.error}}": "设置 kubectl 上下文时出错:{{.error}}", + "Error with downloading nerdctl": "", + "Error with downloading nerdctld": "", "Error with ssh-add": "", "Error writing mount pid": "写入 mount pid 时出错", "Error: You have selected Kubernetes v{{.new}}, but the existing cluster for your profile is running Kubernetes v{{.old}}. Non-destructive downgrades are not supported, but you can proceed by performing one of the following options:\n\n* Recreate the cluster using Kubernetes v{{.new}}: Run \"minikube delete {{.profile}}\", then \"minikube start {{.profile}} --kubernetes-version={{.new}}\"\n* Create a second cluster with Kubernetes v{{.new}}: Run \"minikube start -p \u003cnew name\u003e --kubernetes-version={{.new}}\"\n* Reuse the existing cluster with Kubernetes v{{.old}} or newer: Run \"minikube start {{.profile}} --kubernetes-version={{.old}}\"": "错误:您已选择 Kubernetes v{{.new}},但您的配置文件的现有集群正在运行 Kubernetes v{{.old}}。非破坏性降级不受支持,但若要继续操作,您可以执行以下选项之一:\n\n* 使用 Kubernetes v{{.new}} 重新创建现有集群:运行“minikube delete {{.profile}}”,然后运行“minikube start {{.profile}} --kubernetes-version={{.new}}”\n* 使用 Kubernetes v{{.new}} 再创建一个集群:运行“minikube start -p \u003cnew name\u003e --kubernetes-version={{.new}}”\n* 通过 Kubernetes v{{.old}} 或更高版本重复使用现有集群:运行“minikube start {{.profile}} --kubernetes-version={{.old}}”", @@ -815,7 +817,7 @@ "The cri socket path to be used": "需要使用的 cri 套接字路径", "The cri socket path to be used.": "需要使用的 cri 套接字路径。", "The docker-env command is incompatible with multi-node clusters. Use the 'registry' add-on: https://minikube.sigs.k8s.io/docs/handbook/registry/": "", - "The docker-env command is only compatible with the \"docker\" runtime, but this cluster was configured to use the \"{{.runtime}}\" runtime.": "", + "The docker-env command is only compatible with the \"docker\" runtime or \"containerd\" runtime, but this cluster was configured to use the \"{{.runtime}}\" runtime.": "", "The driver '{{.driver}}' is not supported on {{.os}}/{{.arch}}": "{{.os}} 不支持驱动程序“{{.driver}}/{{.arch}}”", "The existing \"{{.name}}\" cluster was created using the \"{{.old}}\" driver, which is incompatible with requested \"{{.new}}\" driver.": "", "The existing node configuration appears to be corrupt. Run 'minikube delete'": "", From c8d30c33317973834b55b3d16cb136c17a051048 Mon Sep 17 00:00:00 2001 From: minikube-bot Date: Thu, 20 Apr 2023 22:24:52 +0000 Subject: [PATCH 2/9] Updating kicbase image to v0.0.39-1682028460-15452 --- cmd/minikube/cmd/docker-env.go | 1 + cmd/minikube/cmd/start.go | 2 ++ site/content/en/docs/contrib/errorcodes.en.md | 3 +++ translations/de.json | 6 ++---- translations/es.json | 6 ++---- translations/fr.json | 6 ++---- translations/ja.json | 6 ++---- translations/ko.json | 6 ++---- translations/pl.json | 6 ++---- translations/ru.json | 6 ++---- translations/strings.txt | 6 ++---- translations/zh-CN.json | 6 ++---- 12 files changed, 24 insertions(+), 36 deletions(-) diff --git a/cmd/minikube/cmd/docker-env.go b/cmd/minikube/cmd/docker-env.go index f478c4af02..da52035416 100644 --- a/cmd/minikube/cmd/docker-env.go +++ b/cmd/minikube/cmd/docker-env.go @@ -313,6 +313,7 @@ docker-cli install instructions: https://minikube.sigs.k8s.io/docs/tutorials/doc exit.Message(reason.Usage, `The docker-env command is only compatible with the "docker" or "containerd"(amd64/arm64) runtime, but this cluster was configured to use the "{{.runtime}}" runtime.`, out.V{"runtime": cr}) } + // for the sake of docker-env command, download and start nerdctl and nerdctld if cr == constants.Containerd { out.WarningT("Using docker-env command with containerd-runtime is a highly experimental feature, and please provide feedback or contribute to make it better") diff --git a/cmd/minikube/cmd/start.go b/cmd/minikube/cmd/start.go index 5c532b5393..9f784f80aa 100644 --- a/cmd/minikube/cmd/start.go +++ b/cmd/minikube/cmd/start.go @@ -2006,6 +2006,8 @@ func getLatestPatch(majorMinorVer string) string { func isTwoDigitSemver(ver string) bool { majorMinorOnly := regexp.MustCompile(`^(?P0|[1-9]\d*)\.(?P0|[1-9]\d*)$`) return majorMinorOnly.MatchString(ver) +} + func startNerdctld() { // for containerd runtime using ssh, we have installed nerdctld and nerdctl into kicbase (linux amd-64 only) // These things will be included in the ISO/Base image in the future versions diff --git a/site/content/en/docs/contrib/errorcodes.en.md b/site/content/en/docs/contrib/errorcodes.en.md index 5085c3133e..7e37a5de79 100644 --- a/site/content/en/docs/contrib/errorcodes.en.md +++ b/site/content/en/docs/contrib/errorcodes.en.md @@ -49,6 +49,9 @@ minkube failed to cache and load cached images "MK_COMMAND_RUNNER" (Exit code ExProgramError) minikube failed to load a Docker Machine CommandRunner +"MK_START_NERDCTLD" (Exit code ExProgramError) +minikube failed to start nerdctld + "MK_COMPLETION" (Exit code ExProgramError) minikube failed to generate shell command completion for a supported shell diff --git a/translations/de.json b/translations/de.json index bd39297a5a..1e5474214d 100644 --- a/translations/de.json +++ b/translations/de.json @@ -238,8 +238,6 @@ "Error starting mount": "Fehler beim Starten von mount", "Error while setting kubectl current context : {{.error}}": "Fehler beim Setzen des aktuellen Kontextes für kubectl : {{.error}}", "Error while setting kubectl current context: {{.error}}": "Fehler beim Setzen des aktuellen Kontextes für kubectl: {{.error}}", - "Error with downloading nerdctl": "", - "Error with downloading nerdctld": "", "Error with ssh-add": "Fehler mit ssh-add", "Error writing mount pid": "Fehler beim Schreiben der mount pid", "Error: You have selected Kubernetes v{{.new}}, but the existing cluster for your profile is running Kubernetes v{{.old}}. Non-destructive downgrades are not supported, but you can proceed by performing one of the following options:\n* Recreate the cluster using Kubernetes v{{.new}}: Run \"minikube delete {{.profile}}\", then \"minikube start {{.profile}} --kubernetes-version={{.new}}\"\n* Create a second cluster with Kubernetes v{{.new}}: Run \"minikube start -p \u003cnew name\u003e --kubernetes-version={{.new}}\"\n* Reuse the existing cluster with Kubernetes v{{.old}} or newer: Run \"minikube start {{.profile}} --kubernetes-version={{.old}}": "Fehler: Sie haben Kubernetes v{{.new}} ausgewählt, aber auf dem vorhandenen Cluster für Ihr Profil wird Kubernetes v{{.old}} ausgeführt. Zerstörungsfreie Downgrades werden nicht unterstützt. Sie können jedoch mit einer der folgenden Optionen fortfahren:\n* Erstellen Sie den Cluster mit Kubernetes v{{.new}} neu: Führen Sie \"minikube delete {{.profile}}\" und dann \"minikube start {{.profile}} - kubernetes-version = {{.new}}\" aus.\n* Erstellen Sie einen zweiten Cluster mit Kubernetes v{{.new}}: Führen Sie \"minikube start -p \u003cnew name\u003e --kubernetes-version = {{.new}}\" aus.\n* Verwenden Sie den vorhandenen Cluster mit Kubernetes v {{.old}} oder höher: Führen Sie \"minikube start {{.profile}} --kubernetes-version = {{.old}}\" aus.", @@ -716,7 +714,7 @@ "The cri socket path to be used": "Der zu verwendende Cri-Socket-Pfad", "The cri socket path to be used.": "Der zu verwendende Cri-Socket-Pfad.", "The docker-env command is incompatible with multi-node clusters. Use the 'registry' add-on: https://minikube.sigs.k8s.io/docs/handbook/registry/": "Der docker-env Befehl ist inkompatibel mit multi-node Clustern. Bitte verwende das 'registry' Addon: https://minikube.sigs.k8s.io/docs/handbook/registry/", - "The docker-env command is only compatible with the \"docker\" runtime or \"containerd\" runtime, but this cluster was configured to use the \"{{.runtime}}\" runtime.": "", + "The docker-env command is only compatible with the \"docker\" or \"containerd\" runtime, but this cluster was configured to use the \"{{.runtime}}\" runtime.": "", "The docker-env command is only compatible with the \"docker\" runtime, but this cluster was configured to use the \"{{.runtime}}\" runtime.": "Der docker-env Befehl ist nur mit der \"Docker\" Laufzeitsumgebung kompatibel, aber dieser Cluster ist für die\"{{.runtime}}\" Laufzeitumgebung konfiguriert.", "The driver '{{.driver}}' is not supported on {{.os}}/{{.arch}}": "Der Treiber '{{.driver}}' wird auf {{.os}}/{{.arch}} nicht unterstützt", "The existing \"{{.name}}\" cluster was created using the \"{{.old}}\" driver, which is incompatible with requested \"{{.new}}\" driver.": "Der existierende \"{{.name}}\" Cluster wurde mit dem alten Treiber \"{{.old}}\" erstellt, welcher inkompatibel ist mit dem Treiber \"{{.new}}\".", @@ -876,7 +874,7 @@ "Userspace file server is shutdown": "Userspace File Server ist heruntergefahren", "Userspace file server: ": "Userspace File Server:", "Using Kubernetes v1.24+ with the Docker runtime requires cri-docker to be installed": "", - "Using Kubernetes {{.version}} since patch version was unspecified": "", + "Using docker-env command with containerd-runtime is a highly experimental feature, and please provide feedback or contribute to make it better": "", "Using image repository {{.name}}": "Verwenden des Image-Repositorys {{.name}}", "Using image {{.registry}}{{.image}}": "Verwende Image {{.registry}}{{.image}}", "Using image {{.registry}}{{.image}} (global image repository)": "Verwende das Image {{.registry}}{{.image}} (globale Image Repository)", diff --git a/translations/es.json b/translations/es.json index a140fbf5d7..8ff14a8a80 100644 --- a/translations/es.json +++ b/translations/es.json @@ -247,8 +247,6 @@ "Error starting mount": "No se ha podido iniciar el montaje", "Error while setting kubectl current context : {{.error}}": "Error mientras se configuraba el contexto actual de kubectl: {{.error}}", "Error while setting kubectl current context: {{.error}}": "Error mientras se configuraba el contexto actual de kubectl: {{.error}}", - "Error with downloading nerdctl": "", - "Error with downloading nerdctld": "", "Error with ssh-add": "Error al ejecutar ssh-add", "Error writing mount pid": "No se ha podido escribir el pid de montaje", "Error: You have selected Kubernetes v{{.new}}, but the existing cluster for your profile is running Kubernetes v{{.old}}. Non-destructive downgrades are not supported, but you can proceed by performing one of the following options:\n* Recreate the cluster using Kubernetes v{{.new}}: Run \"minikube delete {{.profile}}\", then \"minikube start {{.profile}} --kubernetes-version={{.new}}\"\n* Create a second cluster with Kubernetes v{{.new}}: Run \"minikube start -p \u003cnew name\u003e --kubernetes-version={{.new}}\"\n* Reuse the existing cluster with Kubernetes v{{.old}} or newer: Run \"minikube start {{.profile}} --kubernetes-version={{.old}}": "Error: Has seleccionado Kubernetes {{.new}}, pero el clúster de tu perfil utiliza la versión {{.old}}. No se puede cambiar a una versión inferior sin eliminar todos los datos y recursos pertinentes, pero dispones de las siguientes opciones para continuar con la operación:\n* Volver a crear el clúster con Kubernetes {{.new}}: ejecuta \"minikube delete {{.profile}}\" y, luego, \"minikube start {{.profile}} --kubernetes-version={{.new}}\"\n* Crear un segundo clúster con Kubernetes {{.new}}: ejecuta \"minikube start -p \u003cnuevo nombre\u003e --kubernetes-version={{.new}}\"\n* Reutilizar el clúster actual con Kubernetes {{.old}} o una versión posterior: ejecuta \"minikube start {{.profile}} --kubernetes-version={{.old}}", @@ -715,7 +713,7 @@ "The cri socket path to be used": "La ruta del socket de cri", "The cri socket path to be used.": "", "The docker-env command is incompatible with multi-node clusters. Use the 'registry' add-on: https://minikube.sigs.k8s.io/docs/handbook/registry/": "", - "The docker-env command is only compatible with the \"docker\" runtime or \"containerd\" runtime, but this cluster was configured to use the \"{{.runtime}}\" runtime.": "", + "The docker-env command is only compatible with the \"docker\" or \"containerd\" runtime, but this cluster was configured to use the \"{{.runtime}}\" runtime.": "", "The driver '{{.driver}}' is not supported on {{.os}}/{{.arch}}": "El controlador \"{{.driver}}\" no se puede utilizar en {{.os}}/{{.arch}}", "The existing \"{{.name}}\" cluster was created using the \"{{.old}}\" driver, which is incompatible with requested \"{{.new}}\" driver.": "", "The existing node configuration appears to be corrupt. Run 'minikube delete'": "", @@ -874,7 +872,7 @@ "Userspace file server is shutdown": "", "Userspace file server: ": "", "Using Kubernetes v1.24+ with the Docker runtime requires cri-docker to be installed": "", - "Using Kubernetes {{.version}} since patch version was unspecified": "", + "Using docker-env command with containerd-runtime is a highly experimental feature, and please provide feedback or contribute to make it better": "", "Using image repository {{.name}}": "Utilizando el repositorio de imágenes {{.name}}", "Using image {{.registry}}{{.image}}": "", "Using image {{.registry}}{{.image}} (global image repository)": "", diff --git a/translations/fr.json b/translations/fr.json index 95fd5b9d93..c638e0b595 100644 --- a/translations/fr.json +++ b/translations/fr.json @@ -236,8 +236,6 @@ "Error starting mount": "Erreur lors du démarrage du montage", "Error while setting kubectl current context : {{.error}}": "Erreur lors de la définition du contexte actuel de kubectl : {{.error}}", "Error while setting kubectl current context: {{.error}}": "Erreur lors de la définition du contexte actuel de kubectl : {{.error}}", - "Error with downloading nerdctl": "", - "Error with downloading nerdctld": "", "Error with ssh-add": "Erreur avec ssh-add", "Error writing mount pid": "Erreur lors de l'écriture du pid de montage", "Examples": "Exemples", @@ -701,7 +699,7 @@ "The cri socket path to be used.": "Le chemin de socket cri à utiliser.", "The default network for QEMU will change from 'user' to 'socket_vmnet' in a future release": "Le réseau par défaut pour QEMU passera de 'user' à 'socket_vmnet' dans une version future", "The docker-env command is incompatible with multi-node clusters. Use the 'registry' add-on: https://minikube.sigs.k8s.io/docs/handbook/registry/": "La commande docker-env est incompatible avec les clusters multi-nœuds. Utilisez le module 'registry' : https://minikube.sigs.k8s.io/docs/handbook/registry/", - "The docker-env command is only compatible with the \"docker\" runtime or \"containerd\" runtime, but this cluster was configured to use the \"{{.runtime}}\" runtime.": "", + "The docker-env command is only compatible with the \"docker\" or \"containerd\" runtime, but this cluster was configured to use the \"{{.runtime}}\" runtime.": "", "The docker-env command is only compatible with the \"docker\" runtime, but this cluster was configured to use the \"{{.runtime}}\" runtime.": "La commande docker-env n'est compatible qu'avec le runtime \"docker\", mais ce cluster a été configuré pour utiliser le runtime \"{{.runtime}}\".", "The driver '{{.driver}}' is not supported on {{.os}}/{{.arch}}": "Le pilote \"{{.driver}}\" n'est pas compatible avec {{.os}}/{{.arch}}.", "The existing \"{{.name}}\" cluster was created using the \"{{.old}}\" driver, which is incompatible with requested \"{{.new}}\" driver.": "Le cluster \"{{.name}}\" existant a été créé à l'aide du pilote \"{{.old}}\", qui est incompatible avec le pilote \"{{.new}}\" demandé.", @@ -854,7 +852,7 @@ "Userspace file server is shutdown": "Le serveur de fichiers de l'espace utilisateur est arrêté", "Userspace file server: ": "Serveur de fichiers de l'espace utilisateur :", "Using Kubernetes v1.24+ with the Docker runtime requires cri-docker to be installed": "L'utilisation de Kubernetes v1.24+ avec le runtime Docker nécessite l'installation de cri-docker", - "Using Kubernetes {{.version}} since patch version was unspecified": "", + "Using docker-env command with containerd-runtime is a highly experimental feature, and please provide feedback or contribute to make it better": "", "Using image repository {{.name}}": "Utilisation du dépôt d'images {{.name}}…", "Using image {{.registry}}{{.image}}": "Utilisation de l'image {{.registry}}{{.image}}", "Using image {{.registry}}{{.image}} (global image repository)": "Utilisation de l'image {{.registry}}{{.image}} (référentiel d'images global)", diff --git a/translations/ja.json b/translations/ja.json index 840618fcf2..304771e7e1 100644 --- a/translations/ja.json +++ b/translations/ja.json @@ -226,8 +226,6 @@ "Error starting mount": "マウントを開始中にエラーが発生しました", "Error while setting kubectl current context : {{.error}}": "kubectl の現在のコンテキストの設定中にエラーが発生しました : {{.error}}", "Error while setting kubectl current context: {{.error}}": "kubectl の現在のコンテキストの設定中にエラーが発生しました: {{.error}}", - "Error with downloading nerdctl": "", - "Error with downloading nerdctld": "", "Error with ssh-add": "ssh-add でエラーが発生しました", "Error writing mount pid": "マウントした pid を書き込み中にエラーが発生しました", "Examples": "例", @@ -673,7 +671,7 @@ "The control plane node must be running for this command": "このコマンドではコントロールプレーンノードが実行中でなければなりません", "The cri socket path to be used.": "使用される CRI ソケットパス。", "The docker-env command is incompatible with multi-node clusters. Use the 'registry' add-on: https://minikube.sigs.k8s.io/docs/handbook/registry/": "docker-env コマンドはマルチノードクラスターと互換性がありません。'registry' アドオンを使用してください: https://minikube.sigs.k8s.io/docs/handbook/registry/", - "The docker-env command is only compatible with the \"docker\" runtime or \"containerd\" runtime, but this cluster was configured to use the \"{{.runtime}}\" runtime.": "", + "The docker-env command is only compatible with the \"docker\" or \"containerd\" runtime, but this cluster was configured to use the \"{{.runtime}}\" runtime.": "", "The docker-env command is only compatible with the \"docker\" runtime, but this cluster was configured to use the \"{{.runtime}}\" runtime.": "docker-env コマンドは「docker」ランタイムとだけ互換性がありますが、このクラスターは「{{.runtime}}」ランタイムを使用するよう設定されています。", "The driver '{{.driver}}' is not supported on {{.os}}/{{.arch}}": "'{{.driver}}' ドライバーは {{.os}}/{{.arch}} に対応していません", "The existing \"{{.name}}\" cluster was created using the \"{{.old}}\" driver, which is incompatible with requested \"{{.new}}\" driver.": "既存の「{{.name}}」クラスターは、(要求された「{{.new}}」ドライバーとは互換性のない)「{{.old}}」ドライバーを使用して作成されました。 ", @@ -821,7 +819,7 @@ "Userspace file server is shutdown": "ユーザースペースのファイルサーバーが停止しました", "Userspace file server: ": "ユーザースペースのファイルサーバー: ", "Using Kubernetes v1.24+ with the Docker runtime requires cri-docker to be installed": "Docker ランタイムで Kubernetes v1.24+ を使用するには、cri-docker をインストールする必要があります", - "Using Kubernetes {{.version}} since patch version was unspecified": "", + "Using docker-env command with containerd-runtime is a highly experimental feature, and please provide feedback or contribute to make it better": "", "Using image repository {{.name}}": "{{.name}} イメージリポジトリーを使用しています", "Using image {{.registry}}{{.image}}": "{{.registry}}{{.image}} イメージを使用しています", "Using image {{.registry}}{{.image}} (global image repository)": "{{.registry}}{{.image}} イメージ (グローバルイメージリポジトリー) を使用しています", diff --git a/translations/ko.json b/translations/ko.json index be11090556..e40136408e 100644 --- a/translations/ko.json +++ b/translations/ko.json @@ -258,8 +258,6 @@ "Error starting node": "노드 시작 오류", "Error while setting kubectl current context : {{.error}}": "kubectl current context 설정 오류 : {{.error}}", "Error while setting kubectl current context: {{.error}}": "", - "Error with downloading nerdctl": "", - "Error with downloading nerdctld": "", "Error with ssh-add": "", "Error writing mount pid": "", "Examples": "예시", @@ -720,7 +718,7 @@ "The control plane node must be running for this command": "컨트롤 플레인 노드는 실행 상태여야 합니다", "The cri socket path to be used.": "", "The docker-env command is incompatible with multi-node clusters. Use the 'registry' add-on: https://minikube.sigs.k8s.io/docs/handbook/registry/": "", - "The docker-env command is only compatible with the \"docker\" runtime or \"containerd\" runtime, but this cluster was configured to use the \"{{.runtime}}\" runtime.": "", + "The docker-env command is only compatible with the \"docker\" or \"containerd\" runtime, but this cluster was configured to use the \"{{.runtime}}\" runtime.": "", "The driver '{{.driver}}' is not supported on {{.os}}/{{.arch}}": "", "The existing \"{{.name}}\" cluster was created using the \"{{.old}}\" driver, which is incompatible with requested \"{{.new}}\" driver.": "", "The existing node configuration appears to be corrupt. Run 'minikube delete'": "", @@ -873,7 +871,7 @@ "Userspace file server is shutdown": "", "Userspace file server: ": "", "Using Kubernetes v1.24+ with the Docker runtime requires cri-docker to be installed": "", - "Using Kubernetes {{.version}} since patch version was unspecified": "", + "Using docker-env command with containerd-runtime is a highly experimental feature, and please provide feedback or contribute to make it better": "", "Using image repository {{.name}}": "", "Using image {{.registry}}{{.image}}": "", "Using image {{.registry}}{{.image}} (global image repository)": "", diff --git a/translations/pl.json b/translations/pl.json index 8ba14fe8d4..b0cc7d5b9f 100644 --- a/translations/pl.json +++ b/translations/pl.json @@ -248,8 +248,6 @@ "Error starting mount": "", "Error while setting kubectl current context : {{.error}}": "Błąd podczas ustawiania kontekstu kubectl: {{.error}}", "Error while setting kubectl current context: {{.error}}": "", - "Error with downloading nerdctl": "", - "Error with downloading nerdctld": "", "Error with ssh-add": "", "Error writing mount pid": "", "Error: You have selected Kubernetes v{{.new}}, but the existing cluster for your profile is running Kubernetes v{{.old}}. Non-destructive downgrades are not supported, but you can proceed by performing one of the following options:\n* Recreate the cluster using Kubernetes v{{.new}}: Run \"minikube delete {{.profile}}\", then \"minikube start {{.profile}} --kubernetes-version={{.new}}\"\n* Create a second cluster with Kubernetes v{{.new}}: Run \"minikube start -p \u003cnew name\u003e --kubernetes-version={{.new}}\"\n* Reuse the existing cluster with Kubernetes v{{.old}} or newer: Run \"minikube start {{.profile}} --kubernetes-version={{.old}}": "Erreur : Vous avez sélectionné Kubernetes v{{.new}}, mais le cluster existent pour votre profil exécute Kubernetes v{{.old}}. Les rétrogradations non-destructives ne sont pas compatibles. Toutefois, vous pouvez poursuivre le processus en réalisant l'une des trois actions suivantes :\n* Créer à nouveau le cluster en utilisant Kubernetes v{{.new}} – exécutez \"minikube delete {{.profile}}\", puis \"minikube start {{.profile}} --kubernetes-version={{.new}}\".\n* Créer un second cluster avec Kubernetes v{{.new}} – exécutez \"minikube start -p \u003cnew name\u003e --kubernetes-version={{.new}}\".\n* Réutiliser le cluster existent avec Kubernetes v{{.old}} ou version ultérieure – exécutez \"minikube start {{.profile}} --kubernetes-version={{.old}}\".", @@ -728,7 +726,7 @@ "The cri socket path to be used.": "", "The docker service is currently not active": "Serwis docker jest nieaktywny", "The docker-env command is incompatible with multi-node clusters. Use the 'registry' add-on: https://minikube.sigs.k8s.io/docs/handbook/registry/": "", - "The docker-env command is only compatible with the \"docker\" runtime or \"containerd\" runtime, but this cluster was configured to use the \"{{.runtime}}\" runtime.": "", + "The docker-env command is only compatible with the \"docker\" or \"containerd\" runtime, but this cluster was configured to use the \"{{.runtime}}\" runtime.": "", "The driver '{{.driver}}' is not supported on {{.os}}/{{.arch}}": "Sterownik '{{.driver}} jest niewspierany przez system {{.os}}/{{.arch}}", "The existing \"{{.name}}\" cluster was created using the \"{{.old}}\" driver, which is incompatible with requested \"{{.new}}\" driver.": "", "The existing node configuration appears to be corrupt. Run 'minikube delete'": "", @@ -883,7 +881,7 @@ "Userspace file server is shutdown": "", "Userspace file server: ": "", "Using Kubernetes v1.24+ with the Docker runtime requires cri-docker to be installed": "", - "Using Kubernetes {{.version}} since patch version was unspecified": "", + "Using docker-env command with containerd-runtime is a highly experimental feature, and please provide feedback or contribute to make it better": "", "Using image repository {{.name}}": "", "Using image {{.registry}}{{.image}}": "", "Using image {{.registry}}{{.image}} (global image repository)": "", diff --git a/translations/ru.json b/translations/ru.json index 835c64313c..67ef7cc87c 100644 --- a/translations/ru.json +++ b/translations/ru.json @@ -223,8 +223,6 @@ "Error starting mount": "", "Error while setting kubectl current context : {{.error}}": "", "Error while setting kubectl current context: {{.error}}": "", - "Error with downloading nerdctl": "", - "Error with downloading nerdctld": "", "Error with ssh-add": "", "Error writing mount pid": "", "Examples": "", @@ -662,7 +660,7 @@ "The control plane node must be running for this command": "", "The cri socket path to be used.": "", "The docker-env command is incompatible with multi-node clusters. Use the 'registry' add-on: https://minikube.sigs.k8s.io/docs/handbook/registry/": "", - "The docker-env command is only compatible with the \"docker\" runtime or \"containerd\" runtime, but this cluster was configured to use the \"{{.runtime}}\" runtime.": "", + "The docker-env command is only compatible with the \"docker\" or \"containerd\" runtime, but this cluster was configured to use the \"{{.runtime}}\" runtime.": "", "The driver '{{.driver}}' is not supported on {{.os}}/{{.arch}}": "", "The existing \"{{.name}}\" cluster was created using the \"{{.old}}\" driver, which is incompatible with requested \"{{.new}}\" driver.": "", "The existing node configuration appears to be corrupt. Run 'minikube delete'": "", @@ -809,7 +807,7 @@ "Userspace file server is shutdown": "", "Userspace file server: ": "", "Using Kubernetes v1.24+ with the Docker runtime requires cri-docker to be installed": "", - "Using Kubernetes {{.version}} since patch version was unspecified": "", + "Using docker-env command with containerd-runtime is a highly experimental feature, and please provide feedback or contribute to make it better": "", "Using image repository {{.name}}": "", "Using image {{.registry}}{{.image}}": "Используется образ {{.registry}}{{.image}}", "Using image {{.registry}}{{.image}} (global image repository)": "", diff --git a/translations/strings.txt b/translations/strings.txt index 0e254ba656..3c94dbba8e 100644 --- a/translations/strings.txt +++ b/translations/strings.txt @@ -223,8 +223,6 @@ "Error starting mount": "", "Error while setting kubectl current context : {{.error}}": "", "Error while setting kubectl current context: {{.error}}": "", - "Error with downloading nerdctl": "", - "Error with downloading nerdctld": "", "Error with ssh-add": "", "Error writing mount pid": "", "Examples": "", @@ -662,7 +660,7 @@ "The control plane node must be running for this command": "", "The cri socket path to be used.": "", "The docker-env command is incompatible with multi-node clusters. Use the 'registry' add-on: https://minikube.sigs.k8s.io/docs/handbook/registry/": "", - "The docker-env command is only compatible with the \"docker\" runtime or \"containerd\" runtime, but this cluster was configured to use the \"{{.runtime}}\" runtime.": "", + "The docker-env command is only compatible with the \"docker\" or \"containerd\" runtime, but this cluster was configured to use the \"{{.runtime}}\" runtime.": "", "The driver '{{.driver}}' is not supported on {{.os}}/{{.arch}}": "", "The existing \"{{.name}}\" cluster was created using the \"{{.old}}\" driver, which is incompatible with requested \"{{.new}}\" driver.": "", "The existing node configuration appears to be corrupt. Run 'minikube delete'": "", @@ -809,7 +807,7 @@ "Userspace file server is shutdown": "", "Userspace file server: ": "", "Using Kubernetes v1.24+ with the Docker runtime requires cri-docker to be installed": "", - "Using Kubernetes {{.version}} since patch version was unspecified": "", + "Using docker-env command with containerd-runtime is a highly experimental feature, and please provide feedback or contribute to make it better": "", "Using image repository {{.name}}": "", "Using image {{.registry}}{{.image}}": "", "Using image {{.registry}}{{.image}} (global image repository)": "", diff --git a/translations/zh-CN.json b/translations/zh-CN.json index e93eddc652..51266f3fa0 100644 --- a/translations/zh-CN.json +++ b/translations/zh-CN.json @@ -301,8 +301,6 @@ "Error unsetting shell variables": "取消设置 shell 变量时出错", "Error while setting kubectl current context : {{.error}}": "设置 kubectl 上下文时出错 :{{.error}}", "Error while setting kubectl current context: {{.error}}": "设置 kubectl 上下文时出错:{{.error}}", - "Error with downloading nerdctl": "", - "Error with downloading nerdctld": "", "Error with ssh-add": "", "Error writing mount pid": "写入 mount pid 时出错", "Error: You have selected Kubernetes v{{.new}}, but the existing cluster for your profile is running Kubernetes v{{.old}}. Non-destructive downgrades are not supported, but you can proceed by performing one of the following options:\n\n* Recreate the cluster using Kubernetes v{{.new}}: Run \"minikube delete {{.profile}}\", then \"minikube start {{.profile}} --kubernetes-version={{.new}}\"\n* Create a second cluster with Kubernetes v{{.new}}: Run \"minikube start -p \u003cnew name\u003e --kubernetes-version={{.new}}\"\n* Reuse the existing cluster with Kubernetes v{{.old}} or newer: Run \"minikube start {{.profile}} --kubernetes-version={{.old}}\"": "错误:您已选择 Kubernetes v{{.new}},但您的配置文件的现有集群正在运行 Kubernetes v{{.old}}。非破坏性降级不受支持,但若要继续操作,您可以执行以下选项之一:\n\n* 使用 Kubernetes v{{.new}} 重新创建现有集群:运行“minikube delete {{.profile}}”,然后运行“minikube start {{.profile}} --kubernetes-version={{.new}}”\n* 使用 Kubernetes v{{.new}} 再创建一个集群:运行“minikube start -p \u003cnew name\u003e --kubernetes-version={{.new}}”\n* 通过 Kubernetes v{{.old}} 或更高版本重复使用现有集群:运行“minikube start {{.profile}} --kubernetes-version={{.old}}”", @@ -817,7 +815,7 @@ "The cri socket path to be used": "需要使用的 cri 套接字路径", "The cri socket path to be used.": "需要使用的 cri 套接字路径。", "The docker-env command is incompatible with multi-node clusters. Use the 'registry' add-on: https://minikube.sigs.k8s.io/docs/handbook/registry/": "", - "The docker-env command is only compatible with the \"docker\" runtime or \"containerd\" runtime, but this cluster was configured to use the \"{{.runtime}}\" runtime.": "", + "The docker-env command is only compatible with the \"docker\" or \"containerd\" runtime, but this cluster was configured to use the \"{{.runtime}}\" runtime.": "", "The driver '{{.driver}}' is not supported on {{.os}}/{{.arch}}": "{{.os}} 不支持驱动程序“{{.driver}}/{{.arch}}”", "The existing \"{{.name}}\" cluster was created using the \"{{.old}}\" driver, which is incompatible with requested \"{{.new}}\" driver.": "", "The existing node configuration appears to be corrupt. Run 'minikube delete'": "", @@ -983,7 +981,7 @@ "Userspace file server is shutdown": "", "Userspace file server: ": "", "Using Kubernetes v1.24+ with the Docker runtime requires cri-docker to be installed": "", - "Using Kubernetes {{.version}} since patch version was unspecified": "", + "Using docker-env command with containerd-runtime is a highly experimental feature, and please provide feedback or contribute to make it better": "", "Using image repository {{.name}}": "正在使用镜像存储库 {{.name}}", "Using image {{.registry}}{{.image}}": "", "Using image {{.registry}}{{.image}} (global image repository)": "", From e1f77e8f404855de6533b45130ec1c3d7af783f9 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?= <46831212+ComradeProgrammer@users.noreply.github.com> Date: Wed, 7 Jun 2023 22:44:11 +0800 Subject: [PATCH 3/9] Apply suggestions from code review Co-authored-by: Steven Powell <44844360+spowelljr@users.noreply.github.com> --- cmd/minikube/cmd/docker-env.go | 24 +++++++++++++++++++----- cmd/minikube/cmd/start.go | 2 +- deploy/kicbase/Dockerfile | 4 ++-- pkg/minikube/download/download.go | 11 +++++------ test/integration/docker_test.go | 16 +++++++++------- 5 files changed, 36 insertions(+), 21 deletions(-) diff --git a/cmd/minikube/cmd/docker-env.go b/cmd/minikube/cmd/docker-env.go index da52035416..da492d6d36 100644 --- a/cmd/minikube/cmd/docker-env.go +++ b/cmd/minikube/cmd/docker-env.go @@ -309,14 +309,14 @@ docker-cli install instructions: https://minikube.sigs.k8s.io/docs/tutorials/doc } cr := co.Config.KubernetesConfig.ContainerRuntime // nerdctld supports amd64 and arm64 - if !(cr == constants.Docker || cr == constants.Containerd && (runtime.GOARCH == "amd64" || runtime.GOARCH == "arm64")) { - exit.Message(reason.Usage, `The docker-env command is only compatible with the "docker" or "containerd"(amd64/arm64) runtime, but this cluster was configured to use the "{{.runtime}}" runtime.`, - out.V{"runtime": cr}) + if !dockerEnvSupported(cr, driverName) { + exit.Message(reason.Usage, `The docker-env command is only compatible with the "docker" or "containerd" runtime on amd64/arm64 architectures, but this cluster is configured to use the "{{.runtime}}" runtime on {{.arch}}.`, + out.V{"runtime": cr, "arch": runtime.GOARCH}) } - + // for the sake of docker-env command, download and start nerdctl and nerdctld if cr == constants.Containerd { - out.WarningT("Using docker-env command with containerd-runtime is a highly experimental feature, and please provide feedback or contribute to make it better") + out.WarningT("Using the docker-env command with the containerd runtime is a highly experimental feature, please provide feedback or contribute to make it better") startNerdctld() } @@ -641,6 +641,20 @@ func tryDockerConnectivity(bin string, ec DockerEnvConfig) ([]byte, error) { return c.CombinedOutput() } +func dockerEnvSupported(containerRuntime, driverName string) bool { + if containerRuntime != constants.Docker && containerRuntime != constants.Containerd { + return false + } + if runtime.GOARCH != "amd64" && runtime.GOARCH != "arm64" { + return false + } + // we only support containerd-env on the Docker driver + if containerRuntime == constants.Containerd && driverName != driver.Docker { + return false + } + return true +} + func init() { defaultNoProxyGetter = &EnvNoProxyGetter{} dockerEnvCmd.Flags().BoolVar(&noProxy, "no-proxy", false, "Add machine IP to NO_PROXY environment variable") diff --git a/cmd/minikube/cmd/start.go b/cmd/minikube/cmd/start.go index 9f784f80aa..116336d0f9 100644 --- a/cmd/minikube/cmd/start.go +++ b/cmd/minikube/cmd/start.go @@ -2009,7 +2009,7 @@ func isTwoDigitSemver(ver string) bool { } func startNerdctld() { - // for containerd runtime using ssh, we have installed nerdctld and nerdctl into kicbase (linux amd-64 only) + // for containerd runtime using ssh, we have installed nerdctld and nerdctl into kicbase // These things will be included in the ISO/Base image in the future versions // copy these binaries to the path of the containerd node diff --git a/deploy/kicbase/Dockerfile b/deploy/kicbase/Dockerfile index 1aeb2c04ee..2a173c9f27 100644 --- a/deploy/kicbase/Dockerfile +++ b/deploy/kicbase/Dockerfile @@ -141,9 +141,9 @@ RUN clean-install \ libglib2.0-0 # Install nerdctl and nerdctld -RUN export ARCH=$(dpkg --print-architecture | sed 's/ppc64el/ppc64le/' | sed 's/armhf/arm-v7/') \ - && echo "Installing nerdctl and nerdctld ..." \ +RUN export ARCH=$(dpkg --print-architecture) \ && if [ "$ARCH" == "amd64" ] || [ "$ARCH" == "arm64" ]; then \ + echo "Installing nerdctl and nerdctld ..." && \ curl -L --retry 5 --output /tmp/nerdctl.tgz "https://github.com/containerd/nerdctl/releases/download/v${NERDCTL_VERSION}/nerdctl-${NERDCTL_VERSION}-linux-$ARCH.tar.gz" &&\ tar -C /usr/local/bin -xzvf /tmp/nerdctl.tgz &&\ curl -L --retry 5 --output /tmp/nerdctld.tgz "https://github.com/afbjorklund/nerdctld/releases/download/v${NERDCTLD_VERSION}/nerdctld-${NERDCTLD_VERSION}-linux-$ARCH.tar.gz" &&\ diff --git a/pkg/minikube/download/download.go b/pkg/minikube/download/download.go index e1adefeb39..cfc4a9cb59 100644 --- a/pkg/minikube/download/download.go +++ b/pkg/minikube/download/download.go @@ -78,12 +78,11 @@ func download(src, dst string) error { } tmpDst := dst + ".download" client := &getter.Client{ - Src: src, - Dst: tmpDst, - Dir: false, - Mode: getter.ClientModeFile, - Options: clientOptions, - Decompressors: map[string]getter.Decompressor{}, + Src: src, + Dst: tmpDst, + Dir: false, + Mode: getter.ClientModeFile, + Options: clientOptions, Getters: map[string]getter.Getter{ "file": &getter.FileGetter{Copy: false}, "http": &getter.HttpGetter{Netrc: false}, diff --git a/test/integration/docker_test.go b/test/integration/docker_test.go index f0dd628761..617f2149a0 100644 --- a/test/integration/docker_test.go +++ b/test/integration/docker_test.go @@ -169,7 +169,7 @@ func TestForceSystemdEnv(t *testing.T) { func TestDockerEnvContainerd(t *testing.T) { t.Log("running with", ContainerRuntime(), DockerDriver(), runtime.GOOS, runtime.GOARCH) if ContainerRuntime() != constants.Containerd || !DockerDriver() || runtime.GOOS != "linux" || runtime.GOARCH != "amd64" { - t.Skip("skipping: TestDockerEnvContainerd can only be run with the containerd amd64 runtime") + t.Skip("skipping: TestDockerEnvContainerd can only be run with the containerd amd64 runtime on Docker driver") } profile := UniqueProfileName("dockerenv") ctx, cancel := context.WithTimeout(context.Background(), Minutes(30)) @@ -218,6 +218,9 @@ func TestDockerEnvContainerd(t *testing.T) { } dockerHost := groups[1] segments := strings.Split(dockerHost, ":") + if len(segments) < 3 { + t.Errorf("failed to acquire dockerHost, output is %s", dockerHost) + } port := segments[2] // clear remaining keys @@ -236,7 +239,7 @@ func TestDockerEnvContainerd(t *testing.T) { result, err = Run(t, cmd) if err != nil { - t.Fatalf("failed to execute 'docker version',error: %v, output:%s", err, result.Output()) + t.Fatalf("failed to execute 'docker version', error: %v, output: %s", err, result.Output()) } // if we are really connecting to nerdctld inside node, docker version output should have word 'nerdctl' // If everything works properly, in the output of `docker version` you should be able to see something like @@ -256,7 +259,7 @@ func TestDockerEnvContainerd(t *testing.T) { } // now try to build an image - cmd = exec.CommandContext(ctx, "/bin/bash", "-c", fmt.Sprintf("SSH_AUTH_SOCK=%s SSH_AGENT_PID=%s DOCKER_HOST=%s DOCKER_BUILDKIT=0 docker build -t local/minikube-dockerenv-conatinerd-test:latest testdata/docker-env", sshAuthSock, sshAgentPid, dockerHost)) + cmd = exec.CommandContext(ctx, "/bin/bash", "-c", fmt.Sprintf("SSH_AUTH_SOCK=%s SSH_AGENT_PID=%s DOCKER_HOST=%s DOCKER_BUILDKIT=0 docker build -t local/minikube-dockerenv-conatinerd-test:latest testdata/docker-env", sshAuthSock, sshAgentPid, dockerHost)) result, err = Run(t, cmd) if err != nil { t.Errorf("failed to build images, error: %v, output:%s", err, result.Output()) @@ -266,10 +269,9 @@ func TestDockerEnvContainerd(t *testing.T) { cmd = exec.CommandContext(ctx, "/bin/bash", "-c", fmt.Sprintf("SSH_AUTH_SOCK=%s SSH_AGENT_PID=%s DOCKER_HOST=%s docker image ls", sshAuthSock, sshAgentPid, dockerHost)) result, err = Run(t, cmd) if err != nil { - t.Fatalf("failed to execute 'docker image ls',error: %v, output:%s", err, result.Output()) + t.Fatalf("failed to execute 'docker image ls', error: %v, output: %s", err, result.Output()) } - fmt.Println(result.Output()) if !strings.Contains(result.Output(), "local/minikube-dockerenv-conatinerd-test") { - t.Fatal("failed to detect image'local/minikube-dockerenv-conatinerd-test' in output of docker image ls") + t.Fatal("failed to detect image 'local/minikube-dockerenv-conatinerd-test' in output of docker image ls") } -} \ No newline at end of file +} From df8154a5e578e40bf767f3a45f781176951f4bb0 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?= <46831212+ComradeProgrammer@users.noreply.github.com> Date: Sat, 10 Jun 2023 21:54:11 +0800 Subject: [PATCH 4/9] Apply suggestions from code review Co-authored-by: Steven Powell <44844360+spowelljr@users.noreply.github.com> --- cmd/minikube/cmd/docker-env.go | 30 ++++++++++++++++---------- deploy/kicbase/Dockerfile | 2 +- pkg/drivers/kic/types.go | 4 ++-- site/content/en/docs/commands/start.md | 2 +- test/integration/docker_test.go | 2 +- translations/de.json | 7 +++--- translations/es.json | 7 +++--- translations/fr.json | 7 +++--- translations/ja.json | 7 +++--- translations/ko.json | 7 +++--- translations/pl.json | 7 +++--- translations/ru.json | 7 +++--- translations/strings.txt | 7 +++--- translations/zh-CN.json | 5 +++-- 14 files changed, 51 insertions(+), 50 deletions(-) diff --git a/cmd/minikube/cmd/docker-env.go b/cmd/minikube/cmd/docker-env.go index da492d6d36..449408924c 100644 --- a/cmd/minikube/cmd/docker-env.go +++ b/cmd/minikube/cmd/docker-env.go @@ -309,15 +309,23 @@ docker-cli install instructions: https://minikube.sigs.k8s.io/docs/tutorials/doc } cr := co.Config.KubernetesConfig.ContainerRuntime // nerdctld supports amd64 and arm64 - if !dockerEnvSupported(cr, driverName) { - exit.Message(reason.Usage, `The docker-env command is only compatible with the "docker" or "containerd" runtime on amd64/arm64 architectures, but this cluster is configured to use the "{{.runtime}}" runtime on {{.arch}}.`, - out.V{"runtime": cr, "arch": runtime.GOARCH}) + if err := dockerEnvSupported(cr, driverName); err != nil { + exit.Message(reason.Usage, err.Error()) } - // for the sake of docker-env command, download and start nerdctl and nerdctld + // for the sake of docker-env command, start nerdctl and nerdctld if cr == constants.Containerd { out.WarningT("Using the docker-env command with the containerd runtime is a highly experimental feature, please provide feedback or contribute to make it better") startNerdctld() + + // docker-env on containerd depends on nerdctld (https://github.com/afbjorklund/nerdctld) as "docker" daeomn + // and nerdctld daemon must be used with ssh connection (it is set in kicbase image's Dockerfile) + // so directly set --ssh-host --ssh-add to true, even user didn't specify them + sshAdd = true + sshHost = true + // user also need to execute ssh-agent bash and minikube ssh-host --append-known before this + // so remind them to do so + out.WarningT("Please ensure you have executed 'ssh-agent bash' and 'minikube ssh-host --append-known' in this shell before using docker-env on containerd. Ignore this message if you have done it") } r := co.CP.Runner @@ -641,18 +649,18 @@ func tryDockerConnectivity(bin string, ec DockerEnvConfig) ([]byte, error) { return c.CombinedOutput() } -func dockerEnvSupported(containerRuntime, driverName string) bool { - if containerRuntime != constants.Docker && containerRuntime != constants.Containerd { - return false - } +func dockerEnvSupported(containerRuntime, driverName string) error { if runtime.GOARCH != "amd64" && runtime.GOARCH != "arm64" { - return false + return fmt.Errorf("the docker-env command only supports amd64 & arm64 architectures") + } + if containerRuntime != constants.Docker && containerRuntime != constants.Containerd { + return fmt.Errorf("the docker-env command only supports the docker and containerd runtimes") } // we only support containerd-env on the Docker driver if containerRuntime == constants.Containerd && driverName != driver.Docker { - return false + return fmt.Errorf("the docker-env command only supports the containerd runtime with the docker driver") } - return true + return nil } func init() { diff --git a/deploy/kicbase/Dockerfile b/deploy/kicbase/Dockerfile index 2a173c9f27..6f884ec32c 100644 --- a/deploy/kicbase/Dockerfile +++ b/deploy/kicbase/Dockerfile @@ -142,7 +142,7 @@ RUN clean-install \ # Install nerdctl and nerdctld RUN export ARCH=$(dpkg --print-architecture) \ - && if [ "$ARCH" == "amd64" ] || [ "$ARCH" == "arm64" ]; then \ + && if [ "$ARCH" = 'amd64' ] || [ "$ARCH" = 'arm64' ]; then \ echo "Installing nerdctl and nerdctld ..." && \ curl -L --retry 5 --output /tmp/nerdctl.tgz "https://github.com/containerd/nerdctl/releases/download/v${NERDCTL_VERSION}/nerdctl-${NERDCTL_VERSION}-linux-$ARCH.tar.gz" &&\ tar -C /usr/local/bin -xzvf /tmp/nerdctl.tgz &&\ diff --git a/pkg/drivers/kic/types.go b/pkg/drivers/kic/types.go index bfacbb7c55..2ffae379ac 100644 --- a/pkg/drivers/kic/types.go +++ b/pkg/drivers/kic/types.go @@ -24,10 +24,10 @@ import ( const ( // Version is the current version of kic - Version = "v0.0.39-1687538068-16731" + Version = "v0.0.39-1686675164-15452" // SHA of the kic base image - baseImageSHA = "d08658afefe15fb29b5fcdace4d88182b61941d4fc6089c962f9de20073de953" + baseImageSHA = "1b5dd777e073cc98bda2dc463cdc550cd7c5b3dcdbff2b89d285943191470e34" // The name of the GCR kicbase repository gcrRepo = "gcr.io/k8s-minikube/kicbase-builds" // The name of the Dockerhub kicbase repository diff --git a/site/content/en/docs/commands/start.md b/site/content/en/docs/commands/start.md index f53e495772..d95f1fb991 100644 --- a/site/content/en/docs/commands/start.md +++ b/site/content/en/docs/commands/start.md @@ -26,7 +26,7 @@ minikube start [flags] --apiserver-names strings A set of apiserver names which are used in the generated certificate for kubernetes. This can be used if you want to make the apiserver available from outside the machine --apiserver-port int The apiserver listening port (default 8443) --auto-update-drivers If set, automatically updates drivers to the latest version. Defaults to true. (default true) - --base-image string The base image to use for docker/podman drivers. Intended for local development. (default "gcr.io/k8s-minikube/kicbase-builds:v0.0.39-1687538068-16731@sha256:d08658afefe15fb29b5fcdace4d88182b61941d4fc6089c962f9de20073de953") + --base-image string The base image to use for docker/podman drivers. Intended for local development. (default "gcr.io/k8s-minikube/kicbase-builds:v0.0.39-1686675164-15452@sha256:1b5dd777e073cc98bda2dc463cdc550cd7c5b3dcdbff2b89d285943191470e34") --binary-mirror string Location to fetch kubectl, kubelet, & kubeadm binaries from. --cache-images If true, cache docker images for the current bootstrapper and load them into the machine. Always false with --driver=none. (default true) --cert-expiration duration Duration until minikube certificate expiration, defaults to three years (26280h). (default 26280h0m0s) diff --git a/test/integration/docker_test.go b/test/integration/docker_test.go index 617f2149a0..2890edaaaa 100644 --- a/test/integration/docker_test.go +++ b/test/integration/docker_test.go @@ -168,7 +168,7 @@ func TestForceSystemdEnv(t *testing.T) { // TestDockerEnvContainerd makes sure that minikube docker-env command works when the runtime is containerd func TestDockerEnvContainerd(t *testing.T) { t.Log("running with", ContainerRuntime(), DockerDriver(), runtime.GOOS, runtime.GOARCH) - if ContainerRuntime() != constants.Containerd || !DockerDriver() || runtime.GOOS != "linux" || runtime.GOARCH != "amd64" { + if ContainerRuntime() != constants.Containerd || !DockerDriver() || runtime.GOOS != "linux" { t.Skip("skipping: TestDockerEnvContainerd can only be run with the containerd amd64 runtime on Docker driver") } profile := UniqueProfileName("dockerenv") diff --git a/translations/de.json b/translations/de.json index 1e5474214d..4a5cac9717 100644 --- a/translations/de.json +++ b/translations/de.json @@ -250,8 +250,6 @@ "External Adapter on which external switch will be created if no external switch is found. (hyperv driver only)": "Externer Adapter, auf dem der externe Switch erzeugt wird, wenn kein externer Switch gefunden wurde. (nur hyperv Treiber)", "Fail check if container paused": "Schlägt fehl, wenn der Container pausiert ist", "Failed removing pid from pidfile: {{.error}}": "", - "Fail to copy file nerctl": "", - "Fail to copy file nerctld": "", "Failed runtime": "Runtime fehlgeschlagen", "Failed to build image": "Bau des Images fehlgeschlagen", "Failed to cache and load images": "Cachen und laden der Images fehlgeschlagen", @@ -490,6 +488,7 @@ "Please also attach the following file to the GitHub issue:": "Bitte hängen Sie die folgende Datei an das GitHub Issue an:", "Please create a cluster with bigger disk size: `minikube start --disk SIZE_MB` ": "Bitte erstellen Sie einen Cluster mit größerer Disk-Größe: `minikube start --disk SIZE_MB` ", "Please either authenticate to the registry or use --base-image flag to use a different registry.": "Entweder authentifizieren Sie sich bitte bei der Registry oder verwenden Sie den --base-image Parameter um eine andere Registry zu verwenden.", + "Please ensure you have executed 'ssh-agent bash' and 'minikube ssh-host --append-known' in this shell before using docker-env on containerd. Ignore this message if you have done it": "", "Please enter a value:": "Bitte geben Sie einen Wert ein:", "Please free up disk or prune images.": "Bitte geben Sie Plattenplatz frei oder löschen Sie unbenutzte Images (prune)", "Please increase Desktop's disk size.": "Bitte erhöhen Sie die Plattengröße von Desktop", @@ -714,7 +713,6 @@ "The cri socket path to be used": "Der zu verwendende Cri-Socket-Pfad", "The cri socket path to be used.": "Der zu verwendende Cri-Socket-Pfad.", "The docker-env command is incompatible with multi-node clusters. Use the 'registry' add-on: https://minikube.sigs.k8s.io/docs/handbook/registry/": "Der docker-env Befehl ist inkompatibel mit multi-node Clustern. Bitte verwende das 'registry' Addon: https://minikube.sigs.k8s.io/docs/handbook/registry/", - "The docker-env command is only compatible with the \"docker\" or \"containerd\" runtime, but this cluster was configured to use the \"{{.runtime}}\" runtime.": "", "The docker-env command is only compatible with the \"docker\" runtime, but this cluster was configured to use the \"{{.runtime}}\" runtime.": "Der docker-env Befehl ist nur mit der \"Docker\" Laufzeitsumgebung kompatibel, aber dieser Cluster ist für die\"{{.runtime}}\" Laufzeitumgebung konfiguriert.", "The driver '{{.driver}}' is not supported on {{.os}}/{{.arch}}": "Der Treiber '{{.driver}}' wird auf {{.os}}/{{.arch}} nicht unterstützt", "The existing \"{{.name}}\" cluster was created using the \"{{.old}}\" driver, which is incompatible with requested \"{{.new}}\" driver.": "Der existierende \"{{.name}}\" Cluster wurde mit dem alten Treiber \"{{.old}}\" erstellt, welcher inkompatibel ist mit dem Treiber \"{{.new}}\".", @@ -874,7 +872,7 @@ "Userspace file server is shutdown": "Userspace File Server ist heruntergefahren", "Userspace file server: ": "Userspace File Server:", "Using Kubernetes v1.24+ with the Docker runtime requires cri-docker to be installed": "", - "Using docker-env command with containerd-runtime is a highly experimental feature, and please provide feedback or contribute to make it better": "", + "Using Kubernetes {{.version}} since patch version was unspecified": "", "Using image repository {{.name}}": "Verwenden des Image-Repositorys {{.name}}", "Using image {{.registry}}{{.image}}": "Verwende Image {{.registry}}{{.image}}", "Using image {{.registry}}{{.image}} (global image repository)": "Verwende das Image {{.registry}}{{.image}} (globale Image Repository)", @@ -882,6 +880,7 @@ "Using rootless driver was required, but the current driver does not seem rootless": "", "Using rootless {{.driver_name}} driver": "", "Using the '{{.runtime}}' runtime with the 'none' driver is an untested configuration!": "Das Verwenden der '{{.runtime}}' Laufzeitumgebung mit dem 'none' Treiber ist eine ungetestete Konfiguration!", + "Using the docker-env command with the containerd runtime is a highly experimental feature, please provide feedback or contribute to make it better": "", "Using the {{.driver}} driver based on existing profile": "Verwende den Treiber {{.driver}} basierend auf dem existierenden Profil", "Using the {{.driver}} driver based on user configuration": "Verwende den Treiber {{.driver}} basierend auf der Benutzer-Konfiguration", "Using {{.driver_name}} driver with root privileges": "", diff --git a/translations/es.json b/translations/es.json index 8ff14a8a80..9fa14befd1 100644 --- a/translations/es.json +++ b/translations/es.json @@ -259,8 +259,6 @@ "External Adapter on which external switch will be created if no external switch is found. (hyperv driver only)": "", "Fail check if container paused": "", "Failed removing pid from pidfile: {{.error}}": "", - "Fail to copy file nerctl": "", - "Fail to copy file nerctld": "", "Failed runtime": "", "Failed to build image": "No se pudo construir la imagen", "Failed to cache and load images": "", @@ -495,6 +493,7 @@ "Please also attach the following file to the GitHub issue:": "", "Please create a cluster with bigger disk size: `minikube start --disk SIZE_MB` ": "", "Please either authenticate to the registry or use --base-image flag to use a different registry.": "", + "Please ensure you have executed 'ssh-agent bash' and 'minikube ssh-host --append-known' in this shell before using docker-env on containerd. Ignore this message if you have done it": "", "Please enter a value:": "", "Please free up disk or prune images.": "", "Please increase Desktop's disk size.": "", @@ -713,7 +712,6 @@ "The cri socket path to be used": "La ruta del socket de cri", "The cri socket path to be used.": "", "The docker-env command is incompatible with multi-node clusters. Use the 'registry' add-on: https://minikube.sigs.k8s.io/docs/handbook/registry/": "", - "The docker-env command is only compatible with the \"docker\" or \"containerd\" runtime, but this cluster was configured to use the \"{{.runtime}}\" runtime.": "", "The driver '{{.driver}}' is not supported on {{.os}}/{{.arch}}": "El controlador \"{{.driver}}\" no se puede utilizar en {{.os}}/{{.arch}}", "The existing \"{{.name}}\" cluster was created using the \"{{.old}}\" driver, which is incompatible with requested \"{{.new}}\" driver.": "", "The existing node configuration appears to be corrupt. Run 'minikube delete'": "", @@ -872,7 +870,7 @@ "Userspace file server is shutdown": "", "Userspace file server: ": "", "Using Kubernetes v1.24+ with the Docker runtime requires cri-docker to be installed": "", - "Using docker-env command with containerd-runtime is a highly experimental feature, and please provide feedback or contribute to make it better": "", + "Using Kubernetes {{.version}} since patch version was unspecified": "", "Using image repository {{.name}}": "Utilizando el repositorio de imágenes {{.name}}", "Using image {{.registry}}{{.image}}": "", "Using image {{.registry}}{{.image}} (global image repository)": "", @@ -880,6 +878,7 @@ "Using rootless driver was required, but the current driver does not seem rootless": "", "Using rootless {{.driver_name}} driver": "", "Using the '{{.runtime}}' runtime with the 'none' driver is an untested configuration!": "", + "Using the docker-env command with the containerd runtime is a highly experimental feature, please provide feedback or contribute to make it better": "", "Using the {{.driver}} driver based on existing profile": "", "Using the {{.driver}} driver based on user configuration": "", "Using {{.driver_name}} driver with root privileges": "", diff --git a/translations/fr.json b/translations/fr.json index c638e0b595..de265d6bda 100644 --- a/translations/fr.json +++ b/translations/fr.json @@ -246,8 +246,6 @@ "External Adapter on which external switch will be created if no external switch is found. (hyperv driver only)": "L'adaptateur externe sur lequel un commutateur externe sera créé si aucun commutateur externe n'est trouvé. (pilote hyperv uniquement)", "Fail check if container paused": "Échec de la vérification si le conteneur est en pause", "Failed removing pid from pidfile: {{.error}}": "", - "Fail to copy file nerctl": "", - "Fail to copy file nerctld": "", "Failed runtime": "Échec de l'exécution", "Failed to build image": "Échec de la création de l'image", "Failed to cache and load images": "Échec de la mise en cache et du chargement des images", @@ -483,6 +481,7 @@ "Please also attach the following file to the GitHub issue:": "Veuillez également joindre le fichier suivant au problème GitHub", "Please create a cluster with bigger disk size: `minikube start --disk SIZE_MB` ": "Veuillez créer un cluster avec une plus grande taille de disque : `minikube start --disk SIZE_MB`", "Please either authenticate to the registry or use --base-image flag to use a different registry.": "Veuillez vous authentifier auprès du registre ou utiliser l'indicateur --base-image pour utiliser un registre différent.", + "Please ensure you have executed 'ssh-agent bash' and 'minikube ssh-host --append-known' in this shell before using docker-env on containerd. Ignore this message if you have done it": "", "Please enter a value:": "Entrer un nombre, SVP:", "Please free up disk or prune images.": "Veuillez libérer le disque ou élaguer les images.", "Please increase Desktop's disk size.": "Veuillez augmenter la taille du disque de Desktop.", @@ -699,7 +698,6 @@ "The cri socket path to be used.": "Le chemin de socket cri à utiliser.", "The default network for QEMU will change from 'user' to 'socket_vmnet' in a future release": "Le réseau par défaut pour QEMU passera de 'user' à 'socket_vmnet' dans une version future", "The docker-env command is incompatible with multi-node clusters. Use the 'registry' add-on: https://minikube.sigs.k8s.io/docs/handbook/registry/": "La commande docker-env est incompatible avec les clusters multi-nœuds. Utilisez le module 'registry' : https://minikube.sigs.k8s.io/docs/handbook/registry/", - "The docker-env command is only compatible with the \"docker\" or \"containerd\" runtime, but this cluster was configured to use the \"{{.runtime}}\" runtime.": "", "The docker-env command is only compatible with the \"docker\" runtime, but this cluster was configured to use the \"{{.runtime}}\" runtime.": "La commande docker-env n'est compatible qu'avec le runtime \"docker\", mais ce cluster a été configuré pour utiliser le runtime \"{{.runtime}}\".", "The driver '{{.driver}}' is not supported on {{.os}}/{{.arch}}": "Le pilote \"{{.driver}}\" n'est pas compatible avec {{.os}}/{{.arch}}.", "The existing \"{{.name}}\" cluster was created using the \"{{.old}}\" driver, which is incompatible with requested \"{{.new}}\" driver.": "Le cluster \"{{.name}}\" existant a été créé à l'aide du pilote \"{{.old}}\", qui est incompatible avec le pilote \"{{.new}}\" demandé.", @@ -852,7 +850,7 @@ "Userspace file server is shutdown": "Le serveur de fichiers de l'espace utilisateur est arrêté", "Userspace file server: ": "Serveur de fichiers de l'espace utilisateur :", "Using Kubernetes v1.24+ with the Docker runtime requires cri-docker to be installed": "L'utilisation de Kubernetes v1.24+ avec le runtime Docker nécessite l'installation de cri-docker", - "Using docker-env command with containerd-runtime is a highly experimental feature, and please provide feedback or contribute to make it better": "", + "Using Kubernetes {{.version}} since patch version was unspecified": "", "Using image repository {{.name}}": "Utilisation du dépôt d'images {{.name}}…", "Using image {{.registry}}{{.image}}": "Utilisation de l'image {{.registry}}{{.image}}", "Using image {{.registry}}{{.image}} (global image repository)": "Utilisation de l'image {{.registry}}{{.image}} (référentiel d'images global)", @@ -862,6 +860,7 @@ "Using rootless driver was required, but the current driver does not seem rootless": "L'utilisation d'un pilote sans root était nécessaire, mais le pilote actuel ne semble pas sans root", "Using rootless {{.driver_name}} driver": "Utilisation du pilote {{.driver_name}} sans root", "Using the '{{.runtime}}' runtime with the 'none' driver is an untested configuration!": "L'utilisation du runtime '{{.runtime}}' avec le pilote 'none' est une configuration non testée !", + "Using the docker-env command with the containerd runtime is a highly experimental feature, please provide feedback or contribute to make it better": "", "Using the {{.driver}} driver based on existing profile": "Utilisation du pilote {{.driver}} basé sur le profil existant", "Using the {{.driver}} driver based on user configuration": "Utilisation du pilote {{.driver}} basé sur la configuration de l'utilisateur", "Using {{.driver_name}} driver with root privileges": "Utilisation du pilote {{.driver_name}} avec le privilège root", diff --git a/translations/ja.json b/translations/ja.json index 304771e7e1..f4613c5120 100644 --- a/translations/ja.json +++ b/translations/ja.json @@ -236,8 +236,6 @@ "External Adapter on which external switch will be created if no external switch is found. (hyperv driver only)": "外部スイッチが見つからない場合に、外部スイッチが作成される外部アダプター (hyperv ドライバーのみ)。", "Fail check if container paused": "コンテナーが一時停止しているかどうかのチェックに失敗しました", "Failed removing pid from pidfile: {{.error}}": "", - "Fail to copy file nerctl": "", - "Fail to copy file nerctld": "", "Failed runtime": "ランタイムが失敗しました", "Failed to build image": "イメージのビルドに失敗しました", "Failed to cache and load images": "イメージのキャッシュとロードに失敗しました", @@ -467,6 +465,7 @@ "Please also attach the following file to the GitHub issue:": "GitHub issue に次のファイルも添付してください:", "Please create a cluster with bigger disk size: `minikube start --disk SIZE_MB` ": "より大きなディスクサイズでクラスターを作ってください: `minikube start --disk SIZE_MB` ", "Please either authenticate to the registry or use --base-image flag to use a different registry.": "レジストリーに認証するか、--base-image フラグで別のレジストリーを指定するかどちらを行ってください。", + "Please ensure you have executed 'ssh-agent bash' and 'minikube ssh-host --append-known' in this shell before using docker-env on containerd. Ignore this message if you have done it": "", "Please enter a value:": "値を入力してください:", "Please free up disk or prune images.": "ディスクを解放するか、イメージを削除してください。", "Please increase Desktop's disk size.": "Desktop のディスクサイズを増やしてください。", @@ -671,7 +670,6 @@ "The control plane node must be running for this command": "このコマンドではコントロールプレーンノードが実行中でなければなりません", "The cri socket path to be used.": "使用される CRI ソケットパス。", "The docker-env command is incompatible with multi-node clusters. Use the 'registry' add-on: https://minikube.sigs.k8s.io/docs/handbook/registry/": "docker-env コマンドはマルチノードクラスターと互換性がありません。'registry' アドオンを使用してください: https://minikube.sigs.k8s.io/docs/handbook/registry/", - "The docker-env command is only compatible with the \"docker\" or \"containerd\" runtime, but this cluster was configured to use the \"{{.runtime}}\" runtime.": "", "The docker-env command is only compatible with the \"docker\" runtime, but this cluster was configured to use the \"{{.runtime}}\" runtime.": "docker-env コマンドは「docker」ランタイムとだけ互換性がありますが、このクラスターは「{{.runtime}}」ランタイムを使用するよう設定されています。", "The driver '{{.driver}}' is not supported on {{.os}}/{{.arch}}": "'{{.driver}}' ドライバーは {{.os}}/{{.arch}} に対応していません", "The existing \"{{.name}}\" cluster was created using the \"{{.old}}\" driver, which is incompatible with requested \"{{.new}}\" driver.": "既存の「{{.name}}」クラスターは、(要求された「{{.new}}」ドライバーとは互換性のない)「{{.old}}」ドライバーを使用して作成されました。 ", @@ -819,7 +817,7 @@ "Userspace file server is shutdown": "ユーザースペースのファイルサーバーが停止しました", "Userspace file server: ": "ユーザースペースのファイルサーバー: ", "Using Kubernetes v1.24+ with the Docker runtime requires cri-docker to be installed": "Docker ランタイムで Kubernetes v1.24+ を使用するには、cri-docker をインストールする必要があります", - "Using docker-env command with containerd-runtime is a highly experimental feature, and please provide feedback or contribute to make it better": "", + "Using Kubernetes {{.version}} since patch version was unspecified": "", "Using image repository {{.name}}": "{{.name}} イメージリポジトリーを使用しています", "Using image {{.registry}}{{.image}}": "{{.registry}}{{.image}} イメージを使用しています", "Using image {{.registry}}{{.image}} (global image repository)": "{{.registry}}{{.image}} イメージ (グローバルイメージリポジトリー) を使用しています", @@ -827,6 +825,7 @@ "Using rootless driver was required, but the current driver does not seem rootless": "rootless ドライバー使用が必要でしたが、現在のドライバーは rootless が必要ないようです", "Using rootless {{.driver_name}} driver": "rootless {{.driver_name}} ドライバー使用", "Using the '{{.runtime}}' runtime with the 'none' driver is an untested configuration!": "' none' ドライバーでの '{{.runtime}}' ランタイム使用は、未テストの設定です!", + "Using the docker-env command with the containerd runtime is a highly experimental feature, please provide feedback or contribute to make it better": "", "Using the {{.driver}} driver based on existing profile": "既存のプロファイルを元に、{{.driver}} ドライバーを使用します", "Using the {{.driver}} driver based on user configuration": "ユーザーの設定に基づいて {{.driver}} ドライバーを使用します", "Using {{.driver_name}} driver with root privileges": "root 権限を持つ {{.driver_name}} ドライバーを使用", diff --git a/translations/ko.json b/translations/ko.json index e40136408e..284f34b207 100644 --- a/translations/ko.json +++ b/translations/ko.json @@ -268,8 +268,6 @@ "External Adapter on which external switch will be created if no external switch is found. (hyperv driver only)": "", "Fail check if container paused": "", "Failed removing pid from pidfile: {{.error}}": "", - "Fail to copy file nerctl": "", - "Fail to copy file nerctld": "", "Failed runtime": "런타임이 실패하였습니다", "Failed to build image": "", "Failed to cache ISO": "ISO 캐싱에 실패하였습니다", @@ -508,6 +506,7 @@ "Please also attach the following file to the GitHub issue:": "", "Please create a cluster with bigger disk size: `minikube start --disk SIZE_MB` ": "", "Please either authenticate to the registry or use --base-image flag to use a different registry.": "", + "Please ensure you have executed 'ssh-agent bash' and 'minikube ssh-host --append-known' in this shell before using docker-env on containerd. Ignore this message if you have done it": "", "Please enter a value:": "값을 입력하세요", "Please free up disk or prune images.": "", "Please increase Desktop's disk size.": "", @@ -718,7 +717,6 @@ "The control plane node must be running for this command": "컨트롤 플레인 노드는 실행 상태여야 합니다", "The cri socket path to be used.": "", "The docker-env command is incompatible with multi-node clusters. Use the 'registry' add-on: https://minikube.sigs.k8s.io/docs/handbook/registry/": "", - "The docker-env command is only compatible with the \"docker\" or \"containerd\" runtime, but this cluster was configured to use the \"{{.runtime}}\" runtime.": "", "The driver '{{.driver}}' is not supported on {{.os}}/{{.arch}}": "", "The existing \"{{.name}}\" cluster was created using the \"{{.old}}\" driver, which is incompatible with requested \"{{.new}}\" driver.": "", "The existing node configuration appears to be corrupt. Run 'minikube delete'": "", @@ -871,7 +869,7 @@ "Userspace file server is shutdown": "", "Userspace file server: ": "", "Using Kubernetes v1.24+ with the Docker runtime requires cri-docker to be installed": "", - "Using docker-env command with containerd-runtime is a highly experimental feature, and please provide feedback or contribute to make it better": "", + "Using Kubernetes {{.version}} since patch version was unspecified": "", "Using image repository {{.name}}": "", "Using image {{.registry}}{{.image}}": "", "Using image {{.registry}}{{.image}} (global image repository)": "", @@ -879,6 +877,7 @@ "Using rootless driver was required, but the current driver does not seem rootless": "", "Using rootless {{.driver_name}} driver": "", "Using the '{{.runtime}}' runtime with the 'none' driver is an untested configuration!": "", + "Using the docker-env command with the containerd runtime is a highly experimental feature, please provide feedback or contribute to make it better": "", "Using the {{.driver}} driver based on existing profile": "기존 프로필에 기반하여 {{.driver}} 드라이버를 사용하는 중", "Using the {{.driver}} driver based on user configuration": "유저 환경 설정 정보에 기반하여 {{.driver}} 드라이버를 사용하는 중", "Using {{.driver_name}} driver with root privileges": "", diff --git a/translations/pl.json b/translations/pl.json index b0cc7d5b9f..a127659543 100644 --- a/translations/pl.json +++ b/translations/pl.json @@ -259,8 +259,6 @@ "External Adapter on which external switch will be created if no external switch is found. (hyperv driver only)": "", "Fail check if container paused": "", "Failed removing pid from pidfile: {{.error}}": "", - "Fail to copy file nerctl": "", - "Fail to copy file nerctld": "", "Failed runtime": "", "Failed to build image": "", "Failed to cache and load images": "", @@ -503,6 +501,7 @@ "Please attach the following file to the GitHub issue:": "Dołącz następujący plik do zgłoszenia problemu na GitHubie:", "Please create a cluster with bigger disk size: `minikube start --disk SIZE_MB` ": "Utwórz klaster z większym rozmiarem dysku: `minikube start --disk SIZE_MB`", "Please either authenticate to the registry or use --base-image flag to use a different registry.": "Uwierzytelnij się w rejestrze lub użyć flagi --base-image w celu użycia innego rejestru.", + "Please ensure you have executed 'ssh-agent bash' and 'minikube ssh-host --append-known' in this shell before using docker-env on containerd. Ignore this message if you have done it": "", "Please enter a value:": "Wprowadź wartość", "Please free up disk or prune images.": "Zwolnij miejsce na dysku lub usuń niepotrzebne obrazy", "Please increase Desktop's disk size.": "", @@ -726,7 +725,6 @@ "The cri socket path to be used.": "", "The docker service is currently not active": "Serwis docker jest nieaktywny", "The docker-env command is incompatible with multi-node clusters. Use the 'registry' add-on: https://minikube.sigs.k8s.io/docs/handbook/registry/": "", - "The docker-env command is only compatible with the \"docker\" or \"containerd\" runtime, but this cluster was configured to use the \"{{.runtime}}\" runtime.": "", "The driver '{{.driver}}' is not supported on {{.os}}/{{.arch}}": "Sterownik '{{.driver}} jest niewspierany przez system {{.os}}/{{.arch}}", "The existing \"{{.name}}\" cluster was created using the \"{{.old}}\" driver, which is incompatible with requested \"{{.new}}\" driver.": "", "The existing node configuration appears to be corrupt. Run 'minikube delete'": "", @@ -881,7 +879,7 @@ "Userspace file server is shutdown": "", "Userspace file server: ": "", "Using Kubernetes v1.24+ with the Docker runtime requires cri-docker to be installed": "", - "Using docker-env command with containerd-runtime is a highly experimental feature, and please provide feedback or contribute to make it better": "", + "Using Kubernetes {{.version}} since patch version was unspecified": "", "Using image repository {{.name}}": "", "Using image {{.registry}}{{.image}}": "", "Using image {{.registry}}{{.image}} (global image repository)": "", @@ -889,6 +887,7 @@ "Using rootless driver was required, but the current driver does not seem rootless": "", "Using rootless {{.driver_name}} driver": "", "Using the '{{.runtime}}' runtime with the 'none' driver is an untested configuration!": "", + "Using the docker-env command with the containerd runtime is a highly experimental feature, please provide feedback or contribute to make it better": "", "Using the {{.driver}} driver based on existing profile": "", "Using the {{.driver}} driver based on user configuration": "", "Using {{.driver_name}} driver with root privileges": "", diff --git a/translations/ru.json b/translations/ru.json index 67ef7cc87c..6e314162c8 100644 --- a/translations/ru.json +++ b/translations/ru.json @@ -233,8 +233,6 @@ "External Adapter on which external switch will be created if no external switch is found. (hyperv driver only)": "", "Fail check if container paused": "", "Failed removing pid from pidfile: {{.error}}": "", - "Fail to copy file nerctl": "", - "Fail to copy file nerctld": "", "Failed runtime": "", "Failed to build image": "", "Failed to cache and load images": "", @@ -458,6 +456,7 @@ "Please also attach the following file to the GitHub issue:": "", "Please create a cluster with bigger disk size: `minikube start --disk SIZE_MB` ": "", "Please either authenticate to the registry or use --base-image flag to use a different registry.": "", + "Please ensure you have executed 'ssh-agent bash' and 'minikube ssh-host --append-known' in this shell before using docker-env on containerd. Ignore this message if you have done it": "", "Please enter a value:": "", "Please free up disk or prune images.": "", "Please increase Desktop's disk size.": "", @@ -660,7 +659,6 @@ "The control plane node must be running for this command": "", "The cri socket path to be used.": "", "The docker-env command is incompatible with multi-node clusters. Use the 'registry' add-on: https://minikube.sigs.k8s.io/docs/handbook/registry/": "", - "The docker-env command is only compatible with the \"docker\" or \"containerd\" runtime, but this cluster was configured to use the \"{{.runtime}}\" runtime.": "", "The driver '{{.driver}}' is not supported on {{.os}}/{{.arch}}": "", "The existing \"{{.name}}\" cluster was created using the \"{{.old}}\" driver, which is incompatible with requested \"{{.new}}\" driver.": "", "The existing node configuration appears to be corrupt. Run 'minikube delete'": "", @@ -807,7 +805,7 @@ "Userspace file server is shutdown": "", "Userspace file server: ": "", "Using Kubernetes v1.24+ with the Docker runtime requires cri-docker to be installed": "", - "Using docker-env command with containerd-runtime is a highly experimental feature, and please provide feedback or contribute to make it better": "", + "Using Kubernetes {{.version}} since patch version was unspecified": "", "Using image repository {{.name}}": "", "Using image {{.registry}}{{.image}}": "Используется образ {{.registry}}{{.image}}", "Using image {{.registry}}{{.image}} (global image repository)": "", @@ -815,6 +813,7 @@ "Using rootless driver was required, but the current driver does not seem rootless": "", "Using rootless {{.driver_name}} driver": "", "Using the '{{.runtime}}' runtime with the 'none' driver is an untested configuration!": "", + "Using the docker-env command with the containerd runtime is a highly experimental feature, please provide feedback or contribute to make it better": "", "Using the {{.driver}} driver based on existing profile": "Используется драйвер {{.driver}} на основе существующего профиля", "Using the {{.driver}} driver based on user configuration": "Используется драйвер {{.driver}} на основе конфига пользователя", "Using {{.driver_name}} driver with root privileges": "", diff --git a/translations/strings.txt b/translations/strings.txt index 3c94dbba8e..36024a0b44 100644 --- a/translations/strings.txt +++ b/translations/strings.txt @@ -233,8 +233,6 @@ "External Adapter on which external switch will be created if no external switch is found. (hyperv driver only)": "", "Fail check if container paused": "", "Failed removing pid from pidfile: {{.error}}": "", - "Fail to copy file nerctl": "", - "Fail to copy file nerctld": "", "Failed runtime": "", "Failed to build image": "", "Failed to cache and load images": "", @@ -458,6 +456,7 @@ "Please also attach the following file to the GitHub issue:": "", "Please create a cluster with bigger disk size: `minikube start --disk SIZE_MB` ": "", "Please either authenticate to the registry or use --base-image flag to use a different registry.": "", + "Please ensure you have executed 'ssh-agent bash' and 'minikube ssh-host --append-known' in this shell before using docker-env on containerd. Ignore this message if you have done it": "", "Please enter a value:": "", "Please free up disk or prune images.": "", "Please increase Desktop's disk size.": "", @@ -660,7 +659,6 @@ "The control plane node must be running for this command": "", "The cri socket path to be used.": "", "The docker-env command is incompatible with multi-node clusters. Use the 'registry' add-on: https://minikube.sigs.k8s.io/docs/handbook/registry/": "", - "The docker-env command is only compatible with the \"docker\" or \"containerd\" runtime, but this cluster was configured to use the \"{{.runtime}}\" runtime.": "", "The driver '{{.driver}}' is not supported on {{.os}}/{{.arch}}": "", "The existing \"{{.name}}\" cluster was created using the \"{{.old}}\" driver, which is incompatible with requested \"{{.new}}\" driver.": "", "The existing node configuration appears to be corrupt. Run 'minikube delete'": "", @@ -807,7 +805,7 @@ "Userspace file server is shutdown": "", "Userspace file server: ": "", "Using Kubernetes v1.24+ with the Docker runtime requires cri-docker to be installed": "", - "Using docker-env command with containerd-runtime is a highly experimental feature, and please provide feedback or contribute to make it better": "", + "Using Kubernetes {{.version}} since patch version was unspecified": "", "Using image repository {{.name}}": "", "Using image {{.registry}}{{.image}}": "", "Using image {{.registry}}{{.image}} (global image repository)": "", @@ -815,6 +813,7 @@ "Using rootless driver was required, but the current driver does not seem rootless": "", "Using rootless {{.driver_name}} driver": "", "Using the '{{.runtime}}' runtime with the 'none' driver is an untested configuration!": "", + "Using the docker-env command with the containerd runtime is a highly experimental feature, please provide feedback or contribute to make it better": "", "Using the {{.driver}} driver based on existing profile": "", "Using the {{.driver}} driver based on user configuration": "", "Using {{.driver_name}} driver with root privileges": "", diff --git a/translations/zh-CN.json b/translations/zh-CN.json index 51266f3fa0..94acd7f42b 100644 --- a/translations/zh-CN.json +++ b/translations/zh-CN.json @@ -577,6 +577,7 @@ "Please also attach the following file to the GitHub issue:": "", "Please create a cluster with bigger disk size: `minikube start --disk SIZE_MB` ": "", "Please either authenticate to the registry or use --base-image flag to use a different registry.": "", + "Please ensure you have executed 'ssh-agent bash' and 'minikube ssh-host --append-known' in this shell before using docker-env on containerd. Ignore this message if you have done it": "", "Please enter a value:": "请输入一个值:", "Please free up disk or prune images.": "", "Please increase Desktop's disk size.": "", @@ -815,7 +816,6 @@ "The cri socket path to be used": "需要使用的 cri 套接字路径", "The cri socket path to be used.": "需要使用的 cri 套接字路径。", "The docker-env command is incompatible with multi-node clusters. Use the 'registry' add-on: https://minikube.sigs.k8s.io/docs/handbook/registry/": "", - "The docker-env command is only compatible with the \"docker\" or \"containerd\" runtime, but this cluster was configured to use the \"{{.runtime}}\" runtime.": "", "The driver '{{.driver}}' is not supported on {{.os}}/{{.arch}}": "{{.os}} 不支持驱动程序“{{.driver}}/{{.arch}}”", "The existing \"{{.name}}\" cluster was created using the \"{{.old}}\" driver, which is incompatible with requested \"{{.new}}\" driver.": "", "The existing node configuration appears to be corrupt. Run 'minikube delete'": "", @@ -981,7 +981,7 @@ "Userspace file server is shutdown": "", "Userspace file server: ": "", "Using Kubernetes v1.24+ with the Docker runtime requires cri-docker to be installed": "", - "Using docker-env command with containerd-runtime is a highly experimental feature, and please provide feedback or contribute to make it better": "", + "Using Kubernetes {{.version}} since patch version was unspecified": "", "Using image repository {{.name}}": "正在使用镜像存储库 {{.name}}", "Using image {{.registry}}{{.image}}": "", "Using image {{.registry}}{{.image}} (global image repository)": "", @@ -989,6 +989,7 @@ "Using rootless driver was required, but the current driver does not seem rootless": "", "Using rootless {{.driver_name}} driver": "", "Using the '{{.runtime}}' runtime with the 'none' driver is an untested configuration!": "同时使用 'none' 驱动以及 '{{.runtime}}' 运行时是未经测试过的配置!", + "Using the docker-env command with the containerd runtime is a highly experimental feature, please provide feedback or contribute to make it better": "", "Using the running {{.driver_name}} \"{{.profile_name}}\" VM ...": "使用正在运行的 {{.driver_name}} \"{{.profile_name}}\" 虚拟机", "Using the {{.driver}} driver based on existing profile": "根据现有的配置文件使用 {{.driver}} 驱动程序", "Using the {{.driver}} driver based on user configuration": "根据用户配置使用 {{.driver}} 驱动程序", From d1138d879dd4d0b7a1560bd79012bfba73125ba9 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?= <46831212+ComradeProgrammer@users.noreply.github.com> Date: Fri, 23 Jun 2023 22:54:03 +0800 Subject: [PATCH 5/9] Apply suggestions from code review Co-authored-by: Steven Powell <44844360+spowelljr@users.noreply.github.com> --- test/integration/docker_test.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/test/integration/docker_test.go b/test/integration/docker_test.go index 2890edaaaa..86aa7a3cbb 100644 --- a/test/integration/docker_test.go +++ b/test/integration/docker_test.go @@ -169,7 +169,7 @@ func TestForceSystemdEnv(t *testing.T) { func TestDockerEnvContainerd(t *testing.T) { t.Log("running with", ContainerRuntime(), DockerDriver(), runtime.GOOS, runtime.GOARCH) if ContainerRuntime() != constants.Containerd || !DockerDriver() || runtime.GOOS != "linux" { - t.Skip("skipping: TestDockerEnvContainerd can only be run with the containerd amd64 runtime on Docker driver") + t.Skip("skipping: TestDockerEnvContainerd can only be run with the containerd runtime on Docker driver") } profile := UniqueProfileName("dockerenv") ctx, cancel := context.WithTimeout(context.Background(), Minutes(30)) @@ -259,7 +259,7 @@ func TestDockerEnvContainerd(t *testing.T) { } // now try to build an image - cmd = exec.CommandContext(ctx, "/bin/bash", "-c", fmt.Sprintf("SSH_AUTH_SOCK=%s SSH_AGENT_PID=%s DOCKER_HOST=%s DOCKER_BUILDKIT=0 docker build -t local/minikube-dockerenv-conatinerd-test:latest testdata/docker-env", sshAuthSock, sshAgentPid, dockerHost)) + cmd = exec.CommandContext(ctx, "/bin/bash", "-c", fmt.Sprintf("SSH_AUTH_SOCK=%s SSH_AGENT_PID=%s DOCKER_HOST=%s DOCKER_BUILDKIT=0 docker build -t local/minikube-dockerenv-containerd-test:latest testdata/docker-env", sshAuthSock, sshAgentPid, dockerHost)) result, err = Run(t, cmd) if err != nil { t.Errorf("failed to build images, error: %v, output:%s", err, result.Output()) @@ -271,7 +271,7 @@ func TestDockerEnvContainerd(t *testing.T) { if err != nil { t.Fatalf("failed to execute 'docker image ls', error: %v, output: %s", err, result.Output()) } - if !strings.Contains(result.Output(), "local/minikube-dockerenv-conatinerd-test") { - t.Fatal("failed to detect image 'local/minikube-dockerenv-conatinerd-test' in output of docker image ls") + if !strings.Contains(result.Output(), "local/minikube-dockerenv-containerd-test") { + t.Fatal("failed to detect image 'local/minikube-dockerenv-containerd-test' in output of docker image ls") } } From 3d1b44055adad7e03143a6f957c5b2d808d258a0 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: Sun, 2 Jul 2023 02:52:41 +0800 Subject: [PATCH 6/9] Add auto add-host and ssh-agent for docker-env --- cmd/minikube/cmd/docker-env.go | 22 ++++++- cmd/minikube/cmd/ssh-host.go | 108 ++++++++++++++++---------------- pkg/minikube/reason/reason.go | 2 + test/integration/docker_test.go | 48 +++++--------- 4 files changed, 92 insertions(+), 88 deletions(-) diff --git a/cmd/minikube/cmd/docker-env.go b/cmd/minikube/cmd/docker-env.go index 449408924c..daf294f283 100644 --- a/cmd/minikube/cmd/docker-env.go +++ b/cmd/minikube/cmd/docker-env.go @@ -48,6 +48,7 @@ import ( "k8s.io/minikube/pkg/minikube/out" "k8s.io/minikube/pkg/minikube/reason" "k8s.io/minikube/pkg/minikube/shell" + "k8s.io/minikube/pkg/minikube/sshagent" "k8s.io/minikube/pkg/minikube/sysinit" pkgnetwork "k8s.io/minikube/pkg/network" kconst "k8s.io/minikube/third_party/kubeadm/app/constants" @@ -296,6 +297,14 @@ docker-cli install instructions: https://minikube.sigs.k8s.io/docs/tutorials/doc } cname := ClusterFlagValue() + + // start the ssh-agent + // this must be done before the cluster config is loaded + // otherwise we won't be able to get SSH_AUTH_SOCK and SSH_AGENT_PID from cluster config. + if err := sshagent.Start(cname); err != nil { + exit.Message(reason.SshAgentStart, err.Error()) + } + co := mustload.Running(cname) driverName := co.CP.Host.DriverName @@ -316,6 +325,7 @@ docker-cli install instructions: https://minikube.sigs.k8s.io/docs/tutorials/doc // for the sake of docker-env command, start nerdctl and nerdctld if cr == constants.Containerd { out.WarningT("Using the docker-env command with the containerd runtime is a highly experimental feature, please provide feedback or contribute to make it better") + startNerdctld() // docker-env on containerd depends on nerdctld (https://github.com/afbjorklund/nerdctld) as "docker" daeomn @@ -328,6 +338,10 @@ docker-cli install instructions: https://minikube.sigs.k8s.io/docs/tutorials/doc out.WarningT("Please ensure you have executed 'ssh-agent bash' and 'minikube ssh-host --append-known' in this shell before using docker-env on containerd. Ignore this message if you have done it") } + // set the ssh-agent envs for current process + os.Setenv("SSH_AUTH_SOCK", co.Config.SSHAuthSock) + os.Setenv("SSH_AGENT_PID", strconv.Itoa(co.Config.SSHAgentPID)) + r := co.CP.Runner if cr == constants.Docker { @@ -400,14 +414,18 @@ docker-cli install instructions: https://minikube.sigs.k8s.io/docs/tutorials/doc if err != nil { exit.Error(reason.IfSSHClient, "Error with ssh-add", err) } - cmd := exec.Command(path, d.GetSSHKeyPath()) cmd.Stderr = os.Stderr + cmd.Env = append(cmd.Env, fmt.Sprintf("SSH_AUTH_SOCK=%s", co.Config.SSHAuthSock)) + cmd.Env = append(cmd.Env, fmt.Sprintf("SSH_AGENT_PID=%d", co.Config.SSHAgentPID)) err = cmd.Run() if err != nil { exit.Error(reason.IfSSHClient, "Error with ssh-add", err) } } + + // eventually, run something similar to ssh --append-known + appendKnownHelper(nodeName, true) }, } @@ -558,6 +576,8 @@ func dockerEnvVars(ec DockerEnvConfig) map[string]string { envSSH := map[string]string{ constants.DockerHostEnv: sshURL(ec.username, ec.hostname, ec.sshport), constants.MinikubeActiveDockerdEnv: ec.profile, + constants.SSHAuthSock: ec.sshAuthSock, + constants.SSHAgentPID: agentPID, } var rt map[string]string diff --git a/cmd/minikube/cmd/ssh-host.go b/cmd/minikube/cmd/ssh-host.go index 1755c30ea7..ffec41d3dc 100644 --- a/cmd/minikube/cmd/ssh-host.go +++ b/cmd/minikube/cmd/ssh-host.go @@ -45,69 +45,71 @@ var sshHostCmd = &cobra.Command{ Short: "Retrieve the ssh host key of the specified node", Long: "Retrieve the ssh host key of the specified node.", Run: func(cmd *cobra.Command, args []string) { - cname := ClusterFlagValue() - co := mustload.Running(cname) - if co.CP.Host.DriverName == driver.None { - exit.Message(reason.Usage, "'none' driver does not support 'minikube ssh-host' command") - } + appendKnownHelper(nodeName, appendKnown) + }, +} - var err error - var n *config.Node - if nodeName == "" { - n = co.CP.Node - } else { - n, _, err = node.Retrieve(*co.Config, nodeName) - if err != nil { - exit.Message(reason.GuestNodeRetrieve, "Node {{.nodeName}} does not exist.", out.V{"nodeName": nodeName}) - } - } +func appendKnownHelper(nodeName string, appendKnown bool) { + cname := ClusterFlagValue() + co := mustload.Running(cname) + if co.CP.Host.DriverName == driver.None { + exit.Message(reason.Usage, "'none' driver does not support 'minikube ssh-host' command") + } - scanArgs := []string{"-t", "rsa"} - - keys, err := machine.RunSSHHostCommand(co.API, *co.Config, *n, "ssh-keyscan", scanArgs) + var err error + var n *config.Node + if nodeName == "" { + n = co.CP.Node + } else { + n, _, err = node.Retrieve(*co.Config, nodeName) if err != nil { - // This is typically due to a non-zero exit code, so no need for flourish. - out.ErrLn("ssh-keyscan: %v", err) - // It'd be nice if we could pass up the correct error code here :( + exit.Message(reason.GuestNodeRetrieve, "Node {{.nodeName}} does not exist.", out.V{"nodeName": nodeName}) + } + } + + scanArgs := []string{"-t", "rsa"} + + keys, err := machine.RunSSHHostCommand(co.API, *co.Config, *n, "ssh-keyscan", scanArgs) + if err != nil { + // This is typically due to a non-zero exit code, so no need for flourish. + out.ErrLn("ssh-keyscan: %v", err) + // It'd be nice if we could pass up the correct error code here :( + os.Exit(1) + } + + if appendKnown { + addr, port, err := machine.GetSSHHostAddrPort(co.API, *co.Config, *n) + if err != nil { + out.ErrLn("GetSSHHostAddrPort: %v", err) os.Exit(1) } - if appendKnown { - addr, port, err := machine.GetSSHHostAddrPort(co.API, *co.Config, *n) - if err != nil { - out.ErrLn("GetSSHHostAddrPort: %v", err) - os.Exit(1) - } - - host := addr - if port != 22 { - host = fmt.Sprintf("[%s]:%d", addr, port) - } - knownHosts := filepath.Join(homedir.HomeDir(), ".ssh", "known_hosts") - - fmt.Fprintf(os.Stderr, "Host added: %s (%s)\n", knownHosts, host) - if sshutil.KnownHost(host, knownHosts) { - return - } - - f, err := os.OpenFile(knownHosts, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0600) - if err != nil { - out.ErrLn("OpenFile: %v", err) - os.Exit(1) - } - defer f.Close() - - _, err = f.WriteString(keys) - if err != nil { - out.ErrLn("WriteString: %v", err) - os.Exit(1) - } + host := addr + if port != 22 { + host = fmt.Sprintf("[%s]:%d", addr, port) + } + knownHosts := filepath.Join(homedir.HomeDir(), ".ssh", "known_hosts") + fmt.Fprintf(os.Stderr, "Host added: %s (%s)\n", knownHosts, host) + if sshutil.KnownHost(host, knownHosts) { return } - fmt.Printf("%s", keys) - }, + f, err := os.OpenFile(knownHosts, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0600) + if err != nil { + out.ErrLn("OpenFile: %v", err) + os.Exit(1) + } + defer f.Close() + + _, err = f.WriteString(keys) + if err != nil { + out.ErrLn("WriteString: %v", err) + os.Exit(1) + } + + return + } } func init() { diff --git a/pkg/minikube/reason/reason.go b/pkg/minikube/reason/reason.go index 170953f1e7..5c93e594e6 100644 --- a/pkg/minikube/reason/reason.go +++ b/pkg/minikube/reason/reason.go @@ -428,6 +428,8 @@ var ( RuntimeEnable = Kind{ID: "RUNTIME_ENABLE", ExitCode: ExRuntimeError} // minikube failed to cache images for the current container runtime RuntimeCache = Kind{ID: "RUNTIME_CACHE", ExitCode: ExRuntimeError} + // minikube failed to start an ssh-agent when executing docker-env + SshAgentStart = Kind{ID: "SSH_AGENT_START", ExitCode: ExRuntimeError} // service check timed out while starting minikube dashboard SvcCheckTimeout = Kind{ID: "SVC_CHECK_TIMEOUT", ExitCode: ExSvcTimeout} diff --git a/test/integration/docker_test.go b/test/integration/docker_test.go index 86aa7a3cbb..77638f9395 100644 --- a/test/integration/docker_test.go +++ b/test/integration/docker_test.go @@ -184,35 +184,15 @@ func TestDockerEnvContainerd(t *testing.T) { } time.Sleep(time.Second * 10) - // if we are in a shell, we need to run 'ssh-agent bash' to enable the ssh-agent - // but if we are in an integration test, we don't have a bash, so we need to get the environment variables set by ssh-agent, and use them in the following tests - result, err := Run(t, exec.CommandContext(ctx, "ssh-agent")) - if err != nil { - t.Errorf("failed to execute ssh-agent bash, error: %v, output: %s", err, result.Output()) - } - output := result.Output() - // get SSH_AUTH_SOCK - groups := regexp.MustCompile(`SSH_AUTH_SOCK=(\S*);`).FindStringSubmatch(output) - if len(groups) < 2 { - t.Errorf("failed to acquire SSH_AUTH_SOCK, output is %s", output) - } - sshAuthSock := groups[1] - // get SSH_AGENT_PID - groups = regexp.MustCompile(`SSH_AGENT_PID=(\S*);`).FindStringSubmatch(output) - if len(groups) < 2 { - t.Errorf("failed to acquire SSH_AUTH_SOCK, output is %s", output) - } - sshAgentPid := groups[1] - // execute 'minikube docker-env --ssh-host --ssh-add' and extract the 'DOCKER_HOST' environment value - cmd = exec.CommandContext(ctx, "/bin/bash", "-c", fmt.Sprintf("SSH_AUTH_SOCK=%s SSH_AGENT_PID=%s %s docker-env --ssh-host --ssh-add -p %s", sshAuthSock, sshAgentPid, Target(), profile)) - result, err = Run(t, cmd) + cmd = exec.CommandContext(ctx, "/bin/bash", "-c", fmt.Sprintf("%s docker-env --ssh-host --ssh-add -p %s", Target(), profile)) + result, err := Run(t, cmd) if err != nil { t.Errorf("failed to execute minikube docker-env --ssh-host --ssh-add, error: %v, output: %s", err, result.Output()) } - output = result.Output() - groups = regexp.MustCompile(`DOCKER_HOST="(\S*)"`).FindStringSubmatch(output) + output := result.Output() + groups := regexp.MustCompile(`DOCKER_HOST="(\S*)"`).FindStringSubmatch(output) if len(groups) < 2 { t.Errorf("failed to acquire SSH_AUTH_SOCK, output is %s", output) } @@ -221,19 +201,19 @@ func TestDockerEnvContainerd(t *testing.T) { if len(segments) < 3 { t.Errorf("failed to acquire dockerHost, output is %s", dockerHost) } - port := segments[2] - // clear remaining keys - clearResult, err := Run(t, exec.CommandContext(ctx, "ssh-keygen", "-R", "[127.0.0.1]:"+port)) - if err != nil { - t.Logf("failed to clear duplicate keys: %q : %v", clearResult.Command(), err) + // get SSH_AUTH_SOCK + groups = regexp.MustCompile(`SSH_AUTH_SOCK=(\S*)`).FindStringSubmatch(output) + if len(groups) < 2 { + t.Errorf("failed to acquire SSH_AUTH_SOCK, output is %s", output) } - - // execute 'minikube ssh-host --append-known' - result, err = Run(t, exec.CommandContext(ctx, Target(), "ssh-host", "--append-known", "-p", profile)) - if err != nil { - t.Errorf("failed to execute 'minikube ssh-host --append-known', error: %v, output: %s", err, result.Output()) + sshAuthSock := groups[1] + // get SSH_AGENT_PID + groups = regexp.MustCompile(`SSH_AGENT_PID=(\S*)`).FindStringSubmatch(output) + if len(groups) < 2 { + t.Errorf("failed to acquire SSH_AUTH_SOCK, output is %s", output) } + sshAgentPid := groups[1] cmd = exec.CommandContext(ctx, "/bin/bash", "-c", fmt.Sprintf("SSH_AUTH_SOCK=%s SSH_AGENT_PID=%s DOCKER_HOST=%s docker version", sshAuthSock, sshAgentPid, dockerHost)) From a814542ad3f862deaa139b0e8d9c91b365126bac 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: Fri, 7 Jul 2023 00:27:35 +0800 Subject: [PATCH 7/9] feat: use automated ssh-agent in docker-env --- cmd/minikube/cmd/docker-env.go | 23 ++++++++++--------- pkg/minikube/reason/reason.go | 2 +- site/content/en/docs/contrib/errorcodes.en.md | 3 +++ test/integration/docker_test.go | 6 ++--- 4 files changed, 19 insertions(+), 15 deletions(-) diff --git a/cmd/minikube/cmd/docker-env.go b/cmd/minikube/cmd/docker-env.go index daf294f283..45912a161b 100644 --- a/cmd/minikube/cmd/docker-env.go +++ b/cmd/minikube/cmd/docker-env.go @@ -298,13 +298,6 @@ docker-cli install instructions: https://minikube.sigs.k8s.io/docs/tutorials/doc cname := ClusterFlagValue() - // start the ssh-agent - // this must be done before the cluster config is loaded - // otherwise we won't be able to get SSH_AUTH_SOCK and SSH_AGENT_PID from cluster config. - if err := sshagent.Start(cname); err != nil { - exit.Message(reason.SshAgentStart, err.Error()) - } - co := mustload.Running(cname) driverName := co.CP.Host.DriverName @@ -336,11 +329,19 @@ docker-cli install instructions: https://minikube.sigs.k8s.io/docs/tutorials/doc // user also need to execute ssh-agent bash and minikube ssh-host --append-known before this // so remind them to do so out.WarningT("Please ensure you have executed 'ssh-agent bash' and 'minikube ssh-host --append-known' in this shell before using docker-env on containerd. Ignore this message if you have done it") - } - // set the ssh-agent envs for current process - os.Setenv("SSH_AUTH_SOCK", co.Config.SSHAuthSock) - os.Setenv("SSH_AGENT_PID", strconv.Itoa(co.Config.SSHAgentPID)) + // start the ssh-agent + if err := sshagent.Start(cname); err != nil { + exit.Message(reason.SSHAgentStart, err.Error()) + } + // cluster config must be reloaded + // otherwise we won't be able to get SSH_AUTH_SOCK and SSH_AGENT_PID from cluster config. + co = mustload.Running(cname) + + // set the ssh-agent envs for current process + os.Setenv("SSH_AUTH_SOCK", co.Config.SSHAuthSock) + os.Setenv("SSH_AGENT_PID", strconv.Itoa(co.Config.SSHAgentPID)) + } r := co.CP.Runner diff --git a/pkg/minikube/reason/reason.go b/pkg/minikube/reason/reason.go index 5c93e594e6..e7f6b76fe3 100644 --- a/pkg/minikube/reason/reason.go +++ b/pkg/minikube/reason/reason.go @@ -429,7 +429,7 @@ var ( // minikube failed to cache images for the current container runtime RuntimeCache = Kind{ID: "RUNTIME_CACHE", ExitCode: ExRuntimeError} // minikube failed to start an ssh-agent when executing docker-env - SshAgentStart = Kind{ID: "SSH_AGENT_START", ExitCode: ExRuntimeError} + SSHAgentStart = Kind{ID: "SSH_AGENT_START", ExitCode: ExRuntimeError} // service check timed out while starting minikube dashboard SvcCheckTimeout = Kind{ID: "SVC_CHECK_TIMEOUT", ExitCode: ExSvcTimeout} diff --git a/site/content/en/docs/contrib/errorcodes.en.md b/site/content/en/docs/contrib/errorcodes.en.md index 7e37a5de79..dc256eff5c 100644 --- a/site/content/en/docs/contrib/errorcodes.en.md +++ b/site/content/en/docs/contrib/errorcodes.en.md @@ -406,6 +406,9 @@ minikube failed to enable the current container runtime "RUNTIME_CACHE" (Exit code ExRuntimeError) minikube failed to cache images for the current container runtime +"SSH_AGENT_START" (Exit code ExRuntimeError) +minikube failed to start an ssh-agent when executing docker-env + "SVC_CHECK_TIMEOUT" (Exit code ExSvcTimeout) service check timed out while starting minikube dashboard diff --git a/test/integration/docker_test.go b/test/integration/docker_test.go index 77638f9395..71a44c587d 100644 --- a/test/integration/docker_test.go +++ b/test/integration/docker_test.go @@ -194,12 +194,12 @@ func TestDockerEnvContainerd(t *testing.T) { output := result.Output() groups := regexp.MustCompile(`DOCKER_HOST="(\S*)"`).FindStringSubmatch(output) if len(groups) < 2 { - t.Errorf("failed to acquire SSH_AUTH_SOCK, output is %s", output) + t.Errorf("DOCKER_HOST doesn't match expected format, output is %s", output) } dockerHost := groups[1] segments := strings.Split(dockerHost, ":") if len(segments) < 3 { - t.Errorf("failed to acquire dockerHost, output is %s", dockerHost) + t.Errorf("DOCKER_HOST doesn't match expected format, output is %s", dockerHost) } // get SSH_AUTH_SOCK @@ -211,7 +211,7 @@ func TestDockerEnvContainerd(t *testing.T) { // get SSH_AGENT_PID groups = regexp.MustCompile(`SSH_AGENT_PID=(\S*)`).FindStringSubmatch(output) if len(groups) < 2 { - t.Errorf("failed to acquire SSH_AUTH_SOCK, output is %s", output) + t.Errorf("failed to acquire SSH_AUTH_PID, output is %s", output) } sshAgentPid := groups[1] From 19e7ae6e3352ac9719effe9642660d00444e42cc Mon Sep 17 00:00:00 2001 From: minikube-bot Date: Mon, 10 Jul 2023 23:52:24 +0000 Subject: [PATCH 8/9] Updating kicbase image to v0.0.39-1689032083-15452 --- pkg/drivers/kic/types.go | 4 ++-- site/content/en/docs/commands/start.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg/drivers/kic/types.go b/pkg/drivers/kic/types.go index 0a602b9086..0753a35433 100644 --- a/pkg/drivers/kic/types.go +++ b/pkg/drivers/kic/types.go @@ -24,10 +24,10 @@ import ( const ( // Version is the current version of kic - Version = "v0.0.39-1688681246-16834" + Version = "v0.0.39-1689032083-15452" // SHA of the kic base image - baseImageSHA = "849205234efc46da016f3a964268d7c76363fc521532c280d0e8a6bf1cc393b5" + baseImageSHA = "41e03f55414b4bc4a9169ee03de8460ddd2a95f539efd83fce689159a4e20667" // The name of the GCR kicbase repository gcrRepo = "gcr.io/k8s-minikube/kicbase-builds" // The name of the Dockerhub kicbase repository diff --git a/site/content/en/docs/commands/start.md b/site/content/en/docs/commands/start.md index a824eecf22..43f373ec83 100644 --- a/site/content/en/docs/commands/start.md +++ b/site/content/en/docs/commands/start.md @@ -26,7 +26,7 @@ minikube start [flags] --apiserver-names strings A set of apiserver names which are used in the generated certificate for kubernetes. This can be used if you want to make the apiserver available from outside the machine --apiserver-port int The apiserver listening port (default 8443) --auto-update-drivers If set, automatically updates drivers to the latest version. Defaults to true. (default true) - --base-image string The base image to use for docker/podman drivers. Intended for local development. (default "gcr.io/k8s-minikube/kicbase-builds:v0.0.39-1688681246-16834@sha256:849205234efc46da016f3a964268d7c76363fc521532c280d0e8a6bf1cc393b5") + --base-image string The base image to use for docker/podman drivers. Intended for local development. (default "gcr.io/k8s-minikube/kicbase-builds:v0.0.39-1689032083-15452@sha256:41e03f55414b4bc4a9169ee03de8460ddd2a95f539efd83fce689159a4e20667") --binary-mirror string Location to fetch kubectl, kubelet, & kubeadm binaries from. --cache-images If true, cache docker images for the current bootstrapper and load them into the machine. Always false with --driver=none. (default true) --cert-expiration duration Duration until minikube certificate expiration, defaults to three years (26280h). (default 26280h0m0s) From d1276604ada4622944af8ea900fad6add5002fb4 Mon Sep 17 00:00:00 2001 From: Steven Powell Date: Tue, 11 Jul 2023 13:40:47 -0700 Subject: [PATCH 9/9] fix lint error --- cmd/minikube/cmd/docker-env.go | 3 --- cmd/minikube/cmd/ssh-host.go | 7 ++++++- translations/de.json | 1 - translations/es.json | 1 - translations/fr.json | 1 - translations/ja.json | 1 - translations/ko.json | 1 - translations/pl.json | 1 - translations/ru.json | 1 - translations/strings.txt | 1 - translations/zh-CN.json | 1 - 11 files changed, 6 insertions(+), 13 deletions(-) diff --git a/cmd/minikube/cmd/docker-env.go b/cmd/minikube/cmd/docker-env.go index 45912a161b..d47d51ae8e 100644 --- a/cmd/minikube/cmd/docker-env.go +++ b/cmd/minikube/cmd/docker-env.go @@ -326,9 +326,6 @@ docker-cli install instructions: https://minikube.sigs.k8s.io/docs/tutorials/doc // so directly set --ssh-host --ssh-add to true, even user didn't specify them sshAdd = true sshHost = true - // user also need to execute ssh-agent bash and minikube ssh-host --append-known before this - // so remind them to do so - out.WarningT("Please ensure you have executed 'ssh-agent bash' and 'minikube ssh-host --append-known' in this shell before using docker-env on containerd. Ignore this message if you have done it") // start the ssh-agent if err := sshagent.Start(cname); err != nil { diff --git a/cmd/minikube/cmd/ssh-host.go b/cmd/minikube/cmd/ssh-host.go index ffec41d3dc..44b91e3d9f 100644 --- a/cmd/minikube/cmd/ssh-host.go +++ b/cmd/minikube/cmd/ssh-host.go @@ -100,11 +100,16 @@ func appendKnownHelper(nodeName string, appendKnown bool) { out.ErrLn("OpenFile: %v", err) os.Exit(1) } - defer f.Close() _, err = f.WriteString(keys) if err != nil { out.ErrLn("WriteString: %v", err) + f.Close() + os.Exit(1) + } + + if err := f.Close(); err != nil { + out.ErrLn("Close: %v", err) os.Exit(1) } diff --git a/translations/de.json b/translations/de.json index 4a5cac9717..36d51883e8 100644 --- a/translations/de.json +++ b/translations/de.json @@ -488,7 +488,6 @@ "Please also attach the following file to the GitHub issue:": "Bitte hängen Sie die folgende Datei an das GitHub Issue an:", "Please create a cluster with bigger disk size: `minikube start --disk SIZE_MB` ": "Bitte erstellen Sie einen Cluster mit größerer Disk-Größe: `minikube start --disk SIZE_MB` ", "Please either authenticate to the registry or use --base-image flag to use a different registry.": "Entweder authentifizieren Sie sich bitte bei der Registry oder verwenden Sie den --base-image Parameter um eine andere Registry zu verwenden.", - "Please ensure you have executed 'ssh-agent bash' and 'minikube ssh-host --append-known' in this shell before using docker-env on containerd. Ignore this message if you have done it": "", "Please enter a value:": "Bitte geben Sie einen Wert ein:", "Please free up disk or prune images.": "Bitte geben Sie Plattenplatz frei oder löschen Sie unbenutzte Images (prune)", "Please increase Desktop's disk size.": "Bitte erhöhen Sie die Plattengröße von Desktop", diff --git a/translations/es.json b/translations/es.json index 9fa14befd1..ff859d432a 100644 --- a/translations/es.json +++ b/translations/es.json @@ -493,7 +493,6 @@ "Please also attach the following file to the GitHub issue:": "", "Please create a cluster with bigger disk size: `minikube start --disk SIZE_MB` ": "", "Please either authenticate to the registry or use --base-image flag to use a different registry.": "", - "Please ensure you have executed 'ssh-agent bash' and 'minikube ssh-host --append-known' in this shell before using docker-env on containerd. Ignore this message if you have done it": "", "Please enter a value:": "", "Please free up disk or prune images.": "", "Please increase Desktop's disk size.": "", diff --git a/translations/fr.json b/translations/fr.json index c50c9bb117..d3a4566377 100644 --- a/translations/fr.json +++ b/translations/fr.json @@ -481,7 +481,6 @@ "Please also attach the following file to the GitHub issue:": "Veuillez également joindre le fichier suivant au problème GitHub", "Please create a cluster with bigger disk size: `minikube start --disk SIZE_MB` ": "Veuillez créer un cluster avec une plus grande taille de disque : `minikube start --disk SIZE_MB`", "Please either authenticate to the registry or use --base-image flag to use a different registry.": "Veuillez vous authentifier auprès du registre ou utiliser l'indicateur --base-image pour utiliser un registre différent.", - "Please ensure you have executed 'ssh-agent bash' and 'minikube ssh-host --append-known' in this shell before using docker-env on containerd. Ignore this message if you have done it": "", "Please enter a value:": "Entrer un nombre, SVP:", "Please free up disk or prune images.": "Veuillez libérer le disque ou élaguer les images.", "Please increase Desktop's disk size.": "Veuillez augmenter la taille du disque de Desktop.", diff --git a/translations/ja.json b/translations/ja.json index f4613c5120..d93edf7448 100644 --- a/translations/ja.json +++ b/translations/ja.json @@ -465,7 +465,6 @@ "Please also attach the following file to the GitHub issue:": "GitHub issue に次のファイルも添付してください:", "Please create a cluster with bigger disk size: `minikube start --disk SIZE_MB` ": "より大きなディスクサイズでクラスターを作ってください: `minikube start --disk SIZE_MB` ", "Please either authenticate to the registry or use --base-image flag to use a different registry.": "レジストリーに認証するか、--base-image フラグで別のレジストリーを指定するかどちらを行ってください。", - "Please ensure you have executed 'ssh-agent bash' and 'minikube ssh-host --append-known' in this shell before using docker-env on containerd. Ignore this message if you have done it": "", "Please enter a value:": "値を入力してください:", "Please free up disk or prune images.": "ディスクを解放するか、イメージを削除してください。", "Please increase Desktop's disk size.": "Desktop のディスクサイズを増やしてください。", diff --git a/translations/ko.json b/translations/ko.json index 284f34b207..fd975c76dc 100644 --- a/translations/ko.json +++ b/translations/ko.json @@ -506,7 +506,6 @@ "Please also attach the following file to the GitHub issue:": "", "Please create a cluster with bigger disk size: `minikube start --disk SIZE_MB` ": "", "Please either authenticate to the registry or use --base-image flag to use a different registry.": "", - "Please ensure you have executed 'ssh-agent bash' and 'minikube ssh-host --append-known' in this shell before using docker-env on containerd. Ignore this message if you have done it": "", "Please enter a value:": "값을 입력하세요", "Please free up disk or prune images.": "", "Please increase Desktop's disk size.": "", diff --git a/translations/pl.json b/translations/pl.json index a127659543..d143a39368 100644 --- a/translations/pl.json +++ b/translations/pl.json @@ -501,7 +501,6 @@ "Please attach the following file to the GitHub issue:": "Dołącz następujący plik do zgłoszenia problemu na GitHubie:", "Please create a cluster with bigger disk size: `minikube start --disk SIZE_MB` ": "Utwórz klaster z większym rozmiarem dysku: `minikube start --disk SIZE_MB`", "Please either authenticate to the registry or use --base-image flag to use a different registry.": "Uwierzytelnij się w rejestrze lub użyć flagi --base-image w celu użycia innego rejestru.", - "Please ensure you have executed 'ssh-agent bash' and 'minikube ssh-host --append-known' in this shell before using docker-env on containerd. Ignore this message if you have done it": "", "Please enter a value:": "Wprowadź wartość", "Please free up disk or prune images.": "Zwolnij miejsce na dysku lub usuń niepotrzebne obrazy", "Please increase Desktop's disk size.": "", diff --git a/translations/ru.json b/translations/ru.json index 6e314162c8..1d35a5ac95 100644 --- a/translations/ru.json +++ b/translations/ru.json @@ -456,7 +456,6 @@ "Please also attach the following file to the GitHub issue:": "", "Please create a cluster with bigger disk size: `minikube start --disk SIZE_MB` ": "", "Please either authenticate to the registry or use --base-image flag to use a different registry.": "", - "Please ensure you have executed 'ssh-agent bash' and 'minikube ssh-host --append-known' in this shell before using docker-env on containerd. Ignore this message if you have done it": "", "Please enter a value:": "", "Please free up disk or prune images.": "", "Please increase Desktop's disk size.": "", diff --git a/translations/strings.txt b/translations/strings.txt index 36024a0b44..d104a0929a 100644 --- a/translations/strings.txt +++ b/translations/strings.txt @@ -456,7 +456,6 @@ "Please also attach the following file to the GitHub issue:": "", "Please create a cluster with bigger disk size: `minikube start --disk SIZE_MB` ": "", "Please either authenticate to the registry or use --base-image flag to use a different registry.": "", - "Please ensure you have executed 'ssh-agent bash' and 'minikube ssh-host --append-known' in this shell before using docker-env on containerd. Ignore this message if you have done it": "", "Please enter a value:": "", "Please free up disk or prune images.": "", "Please increase Desktop's disk size.": "", diff --git a/translations/zh-CN.json b/translations/zh-CN.json index 83c205c0b7..21f135c95a 100644 --- a/translations/zh-CN.json +++ b/translations/zh-CN.json @@ -577,7 +577,6 @@ "Please also attach the following file to the GitHub issue:": "请同时将以下文件附加到 GitHub 问题中:", "Please create a cluster with bigger disk size: `minikube start --disk SIZE_MB` ": "", "Please either authenticate to the registry or use --base-image flag to use a different registry.": "", - "Please ensure you have executed 'ssh-agent bash' and 'minikube ssh-host --append-known' in this shell before using docker-env on containerd. Ignore this message if you have done it": "", "Please enter a value:": "请输入一个值:", "Please free up disk or prune images.": "", "Please increase Desktop's disk size.": "",