From 8c12c40853390f6efa8da0aef40dc1f6b64e32dd Mon Sep 17 00:00:00 2001 From: Steven Powell Date: Mon, 26 Sep 2022 13:58:48 -0700 Subject: [PATCH] implement socket_vmnet --- cmd/minikube/cmd/docker-env.go | 5 +- cmd/minikube/cmd/service.go | 13 +-- cmd/minikube/cmd/start_flags.go | 14 ++- cmd/minikube/cmd/tunnel.go | 18 +--- pkg/addons/addons.go | 2 +- pkg/addons/addons_autopause.go | 2 +- pkg/drivers/common.go | 96 ++++++++++++++++++ pkg/drivers/common_test.go | 78 ++++++++++++++ pkg/drivers/hyperkit/driver.go | 4 +- pkg/drivers/hyperkit/network.go | 94 ----------------- pkg/drivers/hyperkit/network_test.go | 105 ------------------- pkg/drivers/qemu/qemu.go | 118 +++++++++++++--------- pkg/minikube/cluster/ip.go | 21 ++-- pkg/minikube/driver/driver.go | 3 - pkg/minikube/driver/endpoint.go | 5 +- pkg/minikube/node/start.go | 16 ++- pkg/minikube/registry/drvs/qemu2/qemu2.go | 22 +++- pkg/network/network.go | 5 + 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 +- 27 files changed, 356 insertions(+), 319 deletions(-) delete mode 100644 pkg/drivers/hyperkit/network_test.go diff --git a/cmd/minikube/cmd/docker-env.go b/cmd/minikube/cmd/docker-env.go index 2c436b44ec58..bebbb7f5e6fe 100644 --- a/cmd/minikube/cmd/docker-env.go +++ b/cmd/minikube/cmd/docker-env.go @@ -50,6 +50,7 @@ import ( "k8s.io/minikube/pkg/minikube/reason" "k8s.io/minikube/pkg/minikube/shell" "k8s.io/minikube/pkg/minikube/sysinit" + pkgnetwork "k8s.io/minikube/pkg/network" kconst "k8s.io/minikube/third_party/kubeadm/app/constants" ) @@ -296,12 +297,12 @@ docker-cli install instructions: https://minikube.sigs.k8s.io/docs/tutorials/doc d := co.CP.Host.Driver port := constants.DockerDaemonPort - if driver.NeedsPortForward(driverName) && driver.IsKIC(driverName) { + if driver.NeedsPortForward(driverName) { port, err = oci.ForwardedPort(driverName, cname, port) if err != nil { exit.Message(reason.DrvPortForward, "Error getting port binding for '{{.driver_name}} driver: {{.error}}", out.V{"driver_name": driverName, "error": err}) } - } else if driver.NeedsPortForward(driverName) && driverName == driver.QEMU2 { + } else if driver.IsQEMU(driverName) && pkgnetwork.IsUser(co.Config.Network) { port = d.(*qemu.Driver).EnginePort } diff --git a/cmd/minikube/cmd/service.go b/cmd/minikube/cmd/service.go index bbba3d5459ca..983e4abebad3 100644 --- a/cmd/minikube/cmd/service.go +++ b/cmd/minikube/cmd/service.go @@ -44,6 +44,7 @@ import ( "k8s.io/minikube/pkg/minikube/service" "k8s.io/minikube/pkg/minikube/style" "k8s.io/minikube/pkg/minikube/tunnel/kic" + pkgnetwork "k8s.io/minikube/pkg/network" ) const defaultServiceFormatTemplate = "http://{{.IP}}:{{.Port}}" @@ -86,9 +87,8 @@ var serviceCmd = &cobra.Command{ cname := ClusterFlagValue() co := mustload.Healthy(cname) - // Bail cleanly for qemu2 until implemented - if driver.IsQEMU(co.Config.Driver) { - exit.Message(reason.Unimplemented, "minikube service is not currently implemented with the qemu2 driver. See https://github.com/kubernetes/minikube/issues/14146 for details.") + if driver.IsQEMU(co.Config.Driver) && pkgnetwork.IsUser(co.Config.Network) { + exit.Message(reason.Unimplemented, "minikube service is not currently implemented with the user network on QEMU, try starting minikube with '--network=socket'") } var services service.URLs @@ -146,10 +146,8 @@ You may select another namespace by using 'minikube service {{.service}} -n %d", minPort, maxPort) if err != nil { @@ -235,6 +234,11 @@ func (d *Driver) Create() error { } break } + case "socket": + d.SSHPort, err = d.GetSSHPort() + if err != nil { + return err + } } b2dutils := mcnutils.NewB2dUtils(d.StorePath) if err := b2dutils.CopyIsoToMachineDir(d.Boot2DockerURL, d.MachineName); err != nil { @@ -412,22 +416,11 @@ func (d *Driver) Start() error { "-nic", fmt.Sprintf("user,model=virtio,hostfwd=tcp::%d-:22,hostfwd=tcp::%d-:2376,hostname=%s", d.SSHPort, d.EnginePort, d.GetMachineName()), ) case "socket": - // TODO: implement final socket_vmnet network flags. - exit.Message(reason.Unimplemented, "socket_vmnet network flags are not yet implemented with the qemu2 driver.\n See https://github.com/kubernetes/minikube/pull/14890 for details.") - case "tap": - startCmd = append(startCmd, - "-nic", fmt.Sprintf("tap,model=virtio,ifname=%s,script=no,downscript=no", d.NetworkInterface), - ) - case "vde": startCmd = append(startCmd, - "-nic", fmt.Sprintf("vde,model=virtio,sock=%s", d.NetworkSocket), - ) - case "bridge": - startCmd = append(startCmd, - "-nic", fmt.Sprintf("bridge,model=virtio,br=%s", d.NetworkBridge), + "-device", fmt.Sprintf("virtio-net-pci,netdev=net0,mac=%s", d.MACAddress), "-netdev", "socket,id=net0,fd=3", ) default: - log.Errorf("unknown network: %s", d.Network) + return fmt.Errorf("unknown network: %s", d.Network) } startCmd = append(startCmd, @@ -465,9 +458,40 @@ func (d *Driver) Start() error { return err } - log.Infof("Waiting for VM to start (ssh -p %d docker@localhost)...", d.SSHPort) + switch d.Network { + case "user": + d.IPAddress = "127.0.0.1" + case "socket": + var err error + getIP := func() error { + // QEMU requires MAC address with leading 0s + // But socket_vmnet writes the MAC address to the dhcp leases file with leading 0s stripped + mac := pkgdrivers.TrimMacAddress(d.MACAddress) + d.IPAddress, err = pkgdrivers.GetIPAddressByMACAddress(mac) + if err != nil { + return errors.Wrap(err, "failed to get IP address") + } + return nil + } + // Implement a retry loop because IP address isn't added to dhcp leases file immediately + for i := 0; i < 30; i++ { + log.Debugf("Attempt %d", i) + err = getIP() + if err == nil { + break + } + time.Sleep(2 * time.Second) + } + + if err != nil { + return errors.Wrap(err, "IP address never found in dhcp leases file") + } + log.Debugf("IP: %s", d.IPAddress) + } + + log.Infof("Waiting for VM to start (ssh -p %d docker@%s)...", d.SSHPort, d.IPAddress) - return WaitForTCPWithDelay(fmt.Sprintf("localhost:%d", d.SSHPort), time.Second) + return WaitForTCPWithDelay(fmt.Sprintf("%s:%d", d.IPAddress, d.SSHPort), time.Second) } func cmdOutErr(cmdStr string, args ...string) (string, string, error) { diff --git a/pkg/minikube/cluster/ip.go b/pkg/minikube/cluster/ip.go index 313fb72656ab..ccfa7721706d 100644 --- a/pkg/minikube/cluster/ip.go +++ b/pkg/minikube/cluster/ip.go @@ -58,10 +58,22 @@ func HostIP(host *host.Host, clusterName string) (net.IP, error) { return []byte{}, errors.Wrap(err, "Error converting VM/Host IP address to IPv4 address") } return net.IPv4(vmIP[0], vmIP[1], vmIP[2], byte(1)), nil - case driver.QEMU2: - return net.ParseIP("10.0.2.2"), nil case driver.QEMU: - return net.ParseIP("10.0.2.2"), nil + fallthrough + case driver.QEMU2: + ipString, err := host.Driver.GetIP() + if err != nil { + return []byte{}, errors.Wrap(err, "Error getting IP address") + } + // user network case + if ipString == "127.0.0.1" { + return net.ParseIP("10.0.2.2"), nil + } + ip := net.ParseIP(ipString).To4() + if ip == nil { + return []byte{}, errors.Wrap(err, "Error converting IP address to IPv4 address") + } + return ip, nil case driver.HyperV: v := reflect.ValueOf(host.Driver).Elem() var hypervVirtualSwitch string @@ -151,9 +163,6 @@ func DriverIP(api libmachine.API, machineName string) (net.IP, error) { if driver.IsKIC(host.DriverName) { ipStr = oci.DefaultBindIPV4 } - if driver.IsQEMU(host.DriverName) { - ipStr = "127.0.0.1" - } ip := net.ParseIP(ipStr) if ip == nil { return nil, fmt.Errorf("parsing IP: %s", ipStr) diff --git a/pkg/minikube/driver/driver.go b/pkg/minikube/driver/driver.go index 332daf753700..c58e985e5e2d 100644 --- a/pkg/minikube/driver/driver.go +++ b/pkg/minikube/driver/driver.go @@ -197,9 +197,6 @@ func AllowsPreload(driverName string) bool { // NeedsPortForward returns true if driver is unable provide direct IP connectivity func NeedsPortForward(name string) bool { - if IsQEMU(name) { - return true - } if !IsKIC(name) { return false } diff --git a/pkg/minikube/driver/endpoint.go b/pkg/minikube/driver/endpoint.go index aa02afc9af68..0fb86c3c9949 100644 --- a/pkg/minikube/driver/endpoint.go +++ b/pkg/minikube/driver/endpoint.go @@ -24,11 +24,12 @@ import ( "k8s.io/minikube/pkg/drivers/kic/oci" "k8s.io/minikube/pkg/minikube/config" "k8s.io/minikube/pkg/minikube/constants" + "k8s.io/minikube/pkg/network" ) // ControlPlaneEndpoint returns the location where callers can reach this cluster func ControlPlaneEndpoint(cc *config.ClusterConfig, cp *config.Node, driverName string) (string, net.IP, int, error) { - if NeedsPortForward(driverName) && IsKIC(driverName) { + if NeedsPortForward(driverName) { port, err := oci.ForwardedPort(cc.Driver, cc.Name, cp.Port) if err != nil { klog.Warningf("failed to get forwarded control plane port %v", err) @@ -45,7 +46,7 @@ func ControlPlaneEndpoint(cc *config.ClusterConfig, cp *config.Node, driverName hostname = cc.KubernetesConfig.APIServerName } return hostname, ips[0], port, err - } else if NeedsPortForward(driverName) && IsQEMU(driverName) { + } else if IsQEMU(driverName) && network.IsUser(cc.Network) { return "localhost", net.IPv4(127, 0, 0, 1), cc.APIServerPort, nil } diff --git a/pkg/minikube/node/start.go b/pkg/minikube/node/start.go index 2217f52f25a8..5c86184b19a6 100644 --- a/pkg/minikube/node/start.go +++ b/pkg/minikube/node/start.go @@ -64,6 +64,7 @@ import ( "k8s.io/minikube/pkg/minikube/registry" "k8s.io/minikube/pkg/minikube/style" "k8s.io/minikube/pkg/minikube/vmpath" + "k8s.io/minikube/pkg/network" "k8s.io/minikube/pkg/util" "k8s.io/minikube/pkg/util/retry" kconst "k8s.io/minikube/third_party/kubeadm/app/constants" @@ -561,7 +562,7 @@ func startMachine(cfg *config.ClusterConfig, node *config.Node, delOnFail bool) return runner, preExists, m, host, errors.Wrap(err, "Failed to validate network") } - if driver.IsQEMU(host.Driver.DriverName()) { + if driver.IsQEMU(host.Driver.DriverName()) && network.IsUser(cfg.Network) { apiServerPort, err := getPort() if err != nil { return runner, preExists, m, host, errors.Wrap(err, "Failed to find apiserver port") @@ -664,7 +665,7 @@ func validateNetwork(h *host.Host, r command.Runner, imageRepository string, kub } } - if !driver.BareMetal(h.Driver.DriverName()) && !driver.IsKIC(h.Driver.DriverName()) && !driver.IsQEMU(h.Driver.DriverName()) { + if shouldTrySSH(h.Driver.DriverName(), ip) { if err := trySSH(h, ip); err != nil { return ip, err } @@ -675,6 +676,17 @@ func validateNetwork(h *host.Host, r command.Runner, imageRepository string, kub return ip, nil } +func shouldTrySSH(driverName, ip string) bool { + if driver.BareMetal(driverName) || driver.IsKIC(driverName) { + return false + } + // QEMU with user network + if driver.IsQEMU(driverName) && ip == "127.0.0.1" { + return false + } + return true +} + func trySSH(h *host.Host, ip string) error { if viper.GetBool("force") { return nil diff --git a/pkg/minikube/registry/drvs/qemu2/qemu2.go b/pkg/minikube/registry/drvs/qemu2/qemu2.go index 40305eb1d056..d5264136c402 100644 --- a/pkg/minikube/registry/drvs/qemu2/qemu2.go +++ b/pkg/minikube/registry/drvs/qemu2/qemu2.go @@ -17,6 +17,7 @@ limitations under the License. package qemu2 import ( + "crypto/rand" "fmt" "os" "os/exec" @@ -158,10 +159,9 @@ func configure(cc config.ClusterConfig, n config.Node) (interface{}, error) { if err != nil { return nil, err } - qemuNetwork := cc.Network - if qemuNetwork == "" { - qemuNetwork = "user" - // TODO: on next minor release, default to "socket". + mac, err := generateMACAddress() + if err != nil { + return nil, fmt.Errorf("generating MAC address: %v", err) } return qemu.Driver{ @@ -183,9 +183,10 @@ func configure(cc config.ClusterConfig, n config.Node) (interface{}, error) { CPUType: qemuCPU, Firmware: qemuFirmware, VirtioDrives: false, - Network: qemuNetwork, + Network: cc.Network, CacheMode: "default", IOMode: "threads", + MACAddress: mac, }, nil } @@ -210,3 +211,14 @@ func status() registry.State { return registry.State{Installed: true, Healthy: true, Running: true} } + +func generateMACAddress() (string, error) { + buf := make([]byte, 6) + if _, err := rand.Read(buf); err != nil { + return "", err + } + // Set local bit, ensure unicast address, socket_vmnet doesn't support multicast + buf[0] = (buf[0] | 2) & 0xfe + mac := fmt.Sprintf("%02x:%02x:%02x:%02x:%02x:%02x", buf[0], buf[1], buf[2], buf[3], buf[4], buf[5]) + return mac, nil +} diff --git a/pkg/network/network.go b/pkg/network/network.go index cc5ba15f50e1..bf7b1d644dbb 100644 --- a/pkg/network/network.go +++ b/pkg/network/network.go @@ -218,6 +218,11 @@ func isSubnetPrivate(subnet string) bool { return false } +// IsUser returns if network is user. +func IsUser(network string) bool { + return network == "user" +} + // FreeSubnet will try to find free private network beginning with startSubnet, incrementing it in steps up to number of tries. func FreeSubnet(startSubnet string, step, tries int) (*Parameters, error) { for try := 0; try < tries; try++ { diff --git a/translations/de.json b/translations/de.json index a9c48b5e1d5c..ccc7232f9e33 100644 --- a/translations/de.json +++ b/translations/de.json @@ -689,6 +689,7 @@ "The control plane node must be running for this command": "Der Kontroll-Ebenen-Node muss für diesen Befehl laufen", "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 default network for QEMU will change from 'user' to 'socket' in a future release": "", "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, 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", @@ -973,10 +974,10 @@ "minikube profile was successfully set to {{.profile_name}}": "Minikube Profil wurde erfolgreich gesetzt auf {{.profile_name}}", "minikube provisions and manages local Kubernetes clusters optimized for development workflows.": "Minikube provisioniert und managed lokale Kubernetes Cluster optimiert für Entwicklungs-Workflows.", "minikube quickly sets up a local Kubernetes cluster": "Minikube installiert schnell einen lokalen Kubernetes Cluster", - "minikube service is not currently implemented with the qemu2 driver. See https://github.com/kubernetes/minikube/issues/14146 for details.": "", + "minikube service is not currently implemented with the user network on QEMU, try starting minikube with '--network=socket'": "", "minikube skips various validations when --force is supplied; this may lead to unexpected behavior": "Minikube überspringt diverse Validierungen wenn --force angegeben ist; das könnte zu unerwartetem Verhalten führen", "minikube status --output OUTPUT. json, text": "", - "minikube tunnel is not currently implemented with the qemu2 driver. See https://github.com/kubernetes/minikube/issues/14146 for details.": "", + "minikube tunnel is not currently implemented with the user network on QEMU, try starting minikube with '--network=socket'": "", "minikube {{.version}} is available! Download it: {{.url}}": "Minikube {{.version}} ist verfügbar. Lade es herunter: {{.url}}", "mkcmp is used to compare performance of two minikube binaries": "mkcmp wird verwendet um die Performance von zwei Minikube Binaries zu vergleichen", "mount argument \"{{.value}}\" must be in form: \u003csource directory\u003e:\u003ctarget directory\u003e": "Das Argument \"{{.value}}\" für Mount muss in der Form \u003cQuell Verzeichnis\u003e:\u003cZiel Verzeichnis\u003e", @@ -1000,7 +1001,6 @@ "scheduled stop is not supported on the none driver, skipping scheduling": "Das geplante Stoppen wird von none Treiber nicht unterstützt, überspringe Planung", "service {{.namespace_name}}/{{.service_name}} has no node port": "Service {{.namespace_name}}/{{.service_name}} hat keinen Node Port", "set tunnel bind address, empty or '*' indicates the tunnel should be available for all interfaces": "", - "socket_vmnet network flags are not yet implemented with the qemu2 driver.\n See https://github.com/kubernetes/minikube/pull/14890 for details.": "", "stat failed": "state Fehler", "status json failure": "Status json Fehler", "status text failure": "Status text Fehler", diff --git a/translations/es.json b/translations/es.json index 876c2e085019..9e9f3814493d 100644 --- a/translations/es.json +++ b/translations/es.json @@ -690,6 +690,7 @@ "The control plane node must be running for this command": "", "The cri socket path to be used": "La ruta del socket de cri", "The cri socket path to be used.": "", + "The default network for QEMU will change from 'user' to 'socket' in a future release": "", "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 driver '{{.driver}}' is not supported on {{.os}}/{{.arch}}": "El controlador \"{{.driver}}\" no se puede utilizar en {{.os}}/{{.arch}}", @@ -968,10 +969,10 @@ "minikube profile was successfully set to {{.profile_name}}": "", "minikube provisions and manages local Kubernetes clusters optimized for development workflows.": "", "minikube quickly sets up a local Kubernetes cluster": "", - "minikube service is not currently implemented with the qemu2 driver. See https://github.com/kubernetes/minikube/issues/14146 for details.": "", + "minikube service is not currently implemented with the user network on QEMU, try starting minikube with '--network=socket'": "", "minikube skips various validations when --force is supplied; this may lead to unexpected behavior": "", "minikube status --output OUTPUT. json, text": "", - "minikube tunnel is not currently implemented with the qemu2 driver. See https://github.com/kubernetes/minikube/issues/14146 for details.": "", + "minikube tunnel is not currently implemented with the user network on QEMU, try starting minikube with '--network=socket'": "", "minikube {{.version}} is available! Download it: {{.url}}": "", "mkcmp is used to compare performance of two minikube binaries": "", "mount argument \"{{.value}}\" must be in form: \u003csource directory\u003e:\u003ctarget directory\u003e": "", @@ -994,7 +995,6 @@ "scheduled stop is not supported on the none driver, skipping scheduling": "", "service {{.namespace_name}}/{{.service_name}} has no node port": "", "set tunnel bind address, empty or '*' indicates the tunnel should be available for all interfaces": "", - "socket_vmnet network flags are not yet implemented with the qemu2 driver.\n See https://github.com/kubernetes/minikube/pull/14890 for details.": "", "stat failed": "", "status json failure": "", "status text failure": "", diff --git a/translations/fr.json b/translations/fr.json index ea91d51a59bf..07353c95e514 100644 --- a/translations/fr.json +++ b/translations/fr.json @@ -668,6 +668,7 @@ "The control plane node is not running (state={{.state}})": "Le nœud du plan de contrôle n'est pas en cours d'exécution (state={{.state}})", "The control plane node must be running for this command": "Le nœud du plan de contrôle doit être en cours d'exécution pour cette commande", "The cri socket path to be used.": "Le chemin de socket cri à utiliser.", + "The default network for QEMU will change from 'user' to 'socket' in a future release": "", "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, 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}}.", @@ -944,9 +945,11 @@ "minikube provisions and manages local Kubernetes clusters optimized for development workflows.": "minikube provisionne et gère des clusters Kubernetes locaux optimisés pour les workflows de développement.", "minikube quickly sets up a local Kubernetes cluster": "minikube configure rapidement un cluster Kubernetes local", "minikube service is not currently implemented with the qemu2 driver. See https://github.com/kubernetes/minikube/issues/14146 for details.": "Le service minikube n'est actuellement pas implémenté avec le pilote qemu2. Voir https://github.com/kubernetes/minikube/issues/14146 pour plus de détails.", + "minikube service is not currently implemented with the user network on QEMU, try starting minikube with '--network=socket'": "", "minikube skips various validations when --force is supplied; this may lead to unexpected behavior": "minikube ignore diverses validations lorsque --force est fourni ; cela peut conduire à un comportement inattendu", "minikube status --output OUTPUT. json, text": "état minikube --sortie SORTIE. json, texte", "minikube tunnel is not currently implemented with the qemu2 driver. See https://github.com/kubernetes/minikube/issues/14146 for details.": "Le tunnel minikube n'est actuellement pas implémenté avec le pilote qemu2. Voir https://github.com/kubernetes/minikube/issues/14146 pour plus de détails.", + "minikube tunnel is not currently implemented with the user network on QEMU, try starting minikube with '--network=socket'": "", "minikube {{.version}} is available! Download it: {{.url}}": "minikube {{.version}} est disponible ! Téléchargez-le ici : {{.url}}", "mkcmp is used to compare performance of two minikube binaries": "mkcmp est utilisé pour comparer les performances de deux binaires minikube", "mount argument \"{{.value}}\" must be in form: \u003csource directory\u003e:\u003ctarget directory\u003e": "argument de montage \"{{.value}}\" doit être de la forme : \u003cdossier source\u003e:\u003cdossier de destination\u003e", @@ -969,7 +972,6 @@ "scheduled stop is not supported on the none driver, skipping scheduling": "l'arrêt programmé n'est pas pris en charge sur le pilote none, programmation non prise en compte", "service {{.namespace_name}}/{{.service_name}} has no node port": "le service {{.namespace_name}}/{{.service_name}} n'a pas de port de nœud", "set tunnel bind address, empty or '*' indicates the tunnel should be available for all interfaces": "définit l'adresse de liaison du tunnel, vide ou '*' indique que le tunnel doit être disponible pour toutes les interfaces", - "socket_vmnet network flags are not yet implemented with the qemu2 driver.\n See https://github.com/kubernetes/minikube/pull/14890 for details.": "Les indicateurs de réseau socket_vmnet ne sont pas encore implémentés avec le pilote qemu2.\n Voir https://github.com/kubernetes/minikube/pull/14890 pour plus de détails.", "stat failed": "stat en échec", "status json failure": "état du JSON en échec", "status text failure": "état du texte en échec", @@ -1030,4 +1032,4 @@ "{{.profile}} profile is not valid: {{.err}}": "Le profil {{.profile}} n'est pas valide : {{.err}}", "{{.type}} is not yet a supported filesystem. We will try anyways!": "{{.type}} n'est pas encore un système de fichiers pris en charge. Nous essaierons quand même !", "{{.url}} is not accessible: {{.error}}": "{{.url}} n'est pas accessible : {{.error}}" -} \ No newline at end of file +} diff --git a/translations/ja.json b/translations/ja.json index c6b3acd66c81..bb895cba5ef4 100644 --- a/translations/ja.json +++ b/translations/ja.json @@ -641,6 +641,7 @@ "The control plane node is not running (state={{.state}})": "コントロールプレーンノードは実行中ではありません (state={{.state}})", "The control plane node must be running for this command": "このコマンドではコントロールプレーンノードが実行中でなければなりません", "The cri socket path to be used.": "使用される CRI ソケットパス。", + "The default network for QEMU will change from 'user' to 'socket' in a future release": "", "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, 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}} に対応していません", @@ -905,9 +906,11 @@ "minikube provisions and manages local Kubernetes clusters optimized for development workflows.": "minikube は、開発ワークフロー用に最適化されたローカル Kubernetes クラスターを構築・管理します。", "minikube quickly sets up a local Kubernetes cluster": "minikube はローカル Kubernetes クラスターを迅速にセットアップします", "minikube service is not currently implemented with the qemu2 driver. See https://github.com/kubernetes/minikube/issues/14146 for details.": "minikube サービスは現在、qemu2 ドライバーでは実装されていません。詳細については、https://github.com/kubernetes/minikube/issues/14146 を参照してください。", + "minikube service is not currently implemented with the user network on QEMU, try starting minikube with '--network=socket'": "", "minikube skips various validations when --force is supplied; this may lead to unexpected behavior": "minikube は --force が付与された場合、様々な検証をスキップします (これは予期せぬ挙動を引き起こすかも知れません)", "minikube status --output OUTPUT. json, text": "minikube status --output OUTPUT. json, text", "minikube tunnel is not currently implemented with the qemu2 driver. See https://github.com/kubernetes/minikube/issues/14146 for details.": "minikube トンネルは現在、qemu2 ドライバーでは実装されていません。 詳細については、https://github.com/kubernetes/minikube/issues/14146 を参照してください。", + "minikube tunnel is not currently implemented with the user network on QEMU, try starting minikube with '--network=socket'": "", "minikube {{.version}} is available! Download it: {{.url}}": "minikube {{.version}} が利用可能です!次の URL からダウンロードしてください: {{.url}}", "mkcmp is used to compare performance of two minikube binaries": "mkcmp で 2 つの minikube のバイナリーのパフォーマンスを比較できます", "mount argument \"{{.value}}\" must be in form: \u003csource directory\u003e:\u003ctarget directory\u003e": "マウント引数「{{.value}}」は次の形式でなければなりません: \u003cソースディレクトリー\u003e:\u003cターゲットディレクトリー\u003e", @@ -930,7 +933,6 @@ "scheduled stop is not supported on the none driver, skipping scheduling": "none ドライバーでは予定停止がサポートされていません (予約をスキップします)", "service {{.namespace_name}}/{{.service_name}} has no node port": "サービス {{.namespace_name}}/{{.service_name}} は NodePort がありません", "set tunnel bind address, empty or '*' indicates the tunnel should be available for all interfaces": "トンネル バインド アドレスを設定します。空または '*' は、トンネルがすべてのインターフェイスで使用可能であることを示します", - "socket_vmnet network flags are not yet implemented with the qemu2 driver.\n See https://github.com/kubernetes/minikube/pull/14890 for details.": "", "stat failed": "stat に失敗しました", "status json failure": "status json に失敗しました", "status text failure": "status text に失敗しました", @@ -986,4 +988,4 @@ "{{.profile}} profile is not valid: {{.err}}": "{{.profile}} プロファイルは無効です: {{.err}}", "{{.type}} is not yet a supported filesystem. We will try anyways!": "{{.type}} は未サポートのファイルシステムです。とにかくやってみます!", "{{.url}} is not accessible: {{.error}}": "{{.url}} にアクセスできません: {{.error}}" -} \ No newline at end of file +} diff --git a/translations/ko.json b/translations/ko.json index 92046c658097..53cd74eaa0ad 100644 --- a/translations/ko.json +++ b/translations/ko.json @@ -695,6 +695,7 @@ "The control plane node is not running (state={{.state}})": "컨트롤 플레인 노드가 실행 상태가 아닙니다 (상태={{.state}})", "The control plane node must be running for this command": "컨트롤 플레인 노드는 실행 상태여야 합니다", "The cri socket path to be used.": "", + "The default network for QEMU will change from 'user' to 'socket' in a future release": "", "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 driver '{{.driver}}' is not supported on {{.os}}/{{.arch}}": "", @@ -976,10 +977,10 @@ "minikube profile was successfully set to {{.profile_name}}": "", "minikube provisions and manages local Kubernetes clusters optimized for development workflows.": "minikube는 개발 워크플로우에 최적화된 로컬 쿠버네티스를 제공하고 관리합니다.", "minikube quickly sets up a local Kubernetes cluster": "", - "minikube service is not currently implemented with the qemu2 driver. See https://github.com/kubernetes/minikube/issues/14146 for details.": "", + "minikube service is not currently implemented with the user network on QEMU, try starting minikube with '--network=socket'": "", "minikube skips various validations when --force is supplied; this may lead to unexpected behavior": "", "minikube status --output OUTPUT. json, text": "", - "minikube tunnel is not currently implemented with the qemu2 driver. See https://github.com/kubernetes/minikube/issues/14146 for details.": "", + "minikube tunnel is not currently implemented with the user network on QEMU, try starting minikube with '--network=socket'": "", "minikube {{.version}} is available! Download it: {{.url}}": "minikube {{.version}} 이 사용가능합니다! 다음 경로에서 다운받으세요: {{.url}}", "mkcmp is used to compare performance of two minikube binaries": "", "mount argument \"{{.value}}\" must be in form: \u003csource directory\u003e:\u003ctarget directory\u003e": "", @@ -1002,7 +1003,6 @@ "scheduled stop is not supported on the none driver, skipping scheduling": "", "service {{.namespace_name}}/{{.service_name}} has no node port": "", "set tunnel bind address, empty or '*' indicates the tunnel should be available for all interfaces": "", - "socket_vmnet network flags are not yet implemented with the qemu2 driver.\n See https://github.com/kubernetes/minikube/pull/14890 for details.": "", "stat failed": "", "status json failure": "", "status text failure": "", diff --git a/translations/pl.json b/translations/pl.json index faca6040dd09..d9f251426fb1 100644 --- a/translations/pl.json +++ b/translations/pl.json @@ -702,6 +702,7 @@ "The control plane node is not running (state={{.state}})": "", "The control plane node must be running for this command": "", "The cri socket path to be used.": "", + "The default network for QEMU will change from 'user' to 'socket' in a future release": "", "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.": "", @@ -981,10 +982,10 @@ "minikube profile was successfully set to {{.profile_name}}": "profil minikube został z powodzeniem zmieniony na: {{.profile_name}}", "minikube provisions and manages local Kubernetes clusters optimized for development workflows.": "minikube dostarcza lokalne klastry Kubernetesa zoptymalizowane do celów rozwoju oprogramowania oraz zarządza nimi", "minikube quickly sets up a local Kubernetes cluster": "minikube szybko inicjalizuje lokalny klaster Kubernetesa", - "minikube service is not currently implemented with the qemu2 driver. See https://github.com/kubernetes/minikube/issues/14146 for details.": "", + "minikube service is not currently implemented with the user network on QEMU, try starting minikube with '--network=socket'": "", "minikube skips various validations when --force is supplied; this may lead to unexpected behavior": "użycie flagi --force sprawia, że minikube pomija pewne walidacje, co może skutkować niespodziewanym zachowaniem", "minikube status --output OUTPUT. json, text": "", - "minikube tunnel is not currently implemented with the qemu2 driver. See https://github.com/kubernetes/minikube/issues/14146 for details.": "", + "minikube tunnel is not currently implemented with the user network on QEMU, try starting minikube with '--network=socket'": "", "minikube {{.version}} is available! Download it: {{.url}}": "minikube {{.version}} jest dostępne! Pobierz je z: {{.url}}", "mkcmp is used to compare performance of two minikube binaries": "", "mount argument \"{{.value}}\" must be in form: \u003csource directory\u003e:\u003ctarget directory\u003e": "", @@ -1007,7 +1008,6 @@ "scheduled stop is not supported on the none driver, skipping scheduling": "", "service {{.namespace_name}}/{{.service_name}} has no node port": "", "set tunnel bind address, empty or '*' indicates the tunnel should be available for all interfaces": "", - "socket_vmnet network flags are not yet implemented with the qemu2 driver.\n See https://github.com/kubernetes/minikube/pull/14890 for details.": "", "stat failed": "wykonanie komendy stat nie powiodło się", "status json failure": "", "status text failure": "", diff --git a/translations/ru.json b/translations/ru.json index 789279108f76..5c97721ad848 100644 --- a/translations/ru.json +++ b/translations/ru.json @@ -637,6 +637,7 @@ "The control plane node is not running (state={{.state}})": "", "The control plane node must be running for this command": "", "The cri socket path to be used.": "", + "The default network for QEMU will change from 'user' to 'socket' in a future release": "", "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 driver '{{.driver}}' is not supported on {{.os}}/{{.arch}}": "", @@ -900,10 +901,10 @@ "minikube profile was successfully set to {{.profile_name}}": "", "minikube provisions and manages local Kubernetes clusters optimized for development workflows.": "", "minikube quickly sets up a local Kubernetes cluster": "", - "minikube service is not currently implemented with the qemu2 driver. See https://github.com/kubernetes/minikube/issues/14146 for details.": "", + "minikube service is not currently implemented with the user network on QEMU, try starting minikube with '--network=socket'": "", "minikube skips various validations when --force is supplied; this may lead to unexpected behavior": "", "minikube status --output OUTPUT. json, text": "", - "minikube tunnel is not currently implemented with the qemu2 driver. See https://github.com/kubernetes/minikube/issues/14146 for details.": "", + "minikube tunnel is not currently implemented with the user network on QEMU, try starting minikube with '--network=socket'": "", "minikube {{.version}} is available! Download it: {{.url}}": "", "mkcmp is used to compare performance of two minikube binaries": "", "mount argument \"{{.value}}\" must be in form: \u003csource directory\u003e:\u003ctarget directory\u003e": "", @@ -926,7 +927,6 @@ "scheduled stop is not supported on the none driver, skipping scheduling": "", "service {{.namespace_name}}/{{.service_name}} has no node port": "", "set tunnel bind address, empty or '*' indicates the tunnel should be available for all interfaces": "", - "socket_vmnet network flags are not yet implemented with the qemu2 driver.\n See https://github.com/kubernetes/minikube/pull/14890 for details.": "", "stat failed": "", "status json failure": "", "status text failure": "", diff --git a/translations/strings.txt b/translations/strings.txt index 7eedf237a4a5..95fdd1a922f9 100644 --- a/translations/strings.txt +++ b/translations/strings.txt @@ -637,6 +637,7 @@ "The control plane node is not running (state={{.state}})": "", "The control plane node must be running for this command": "", "The cri socket path to be used.": "", + "The default network for QEMU will change from 'user' to 'socket' in a future release": "", "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 driver '{{.driver}}' is not supported on {{.os}}/{{.arch}}": "", @@ -900,10 +901,10 @@ "minikube profile was successfully set to {{.profile_name}}": "", "minikube provisions and manages local Kubernetes clusters optimized for development workflows.": "", "minikube quickly sets up a local Kubernetes cluster": "", - "minikube service is not currently implemented with the qemu2 driver. See https://github.com/kubernetes/minikube/issues/14146 for details.": "", + "minikube service is not currently implemented with the user network on QEMU, try starting minikube with '--network=socket'": "", "minikube skips various validations when --force is supplied; this may lead to unexpected behavior": "", "minikube status --output OUTPUT. json, text": "", - "minikube tunnel is not currently implemented with the qemu2 driver. See https://github.com/kubernetes/minikube/issues/14146 for details.": "", + "minikube tunnel is not currently implemented with the user network on QEMU, try starting minikube with '--network=socket'": "", "minikube {{.version}} is available! Download it: {{.url}}": "", "mkcmp is used to compare performance of two minikube binaries": "", "mount argument \"{{.value}}\" must be in form: \u003csource directory\u003e:\u003ctarget directory\u003e": "", @@ -926,7 +927,6 @@ "scheduled stop is not supported on the none driver, skipping scheduling": "", "service {{.namespace_name}}/{{.service_name}} has no node port": "", "set tunnel bind address, empty or '*' indicates the tunnel should be available for all interfaces": "", - "socket_vmnet network flags are not yet implemented with the qemu2 driver.\n See https://github.com/kubernetes/minikube/pull/14890 for details.": "", "stat failed": "", "status json failure": "", "status text failure": "", diff --git a/translations/zh-CN.json b/translations/zh-CN.json index 7e7447ddf1cf..cfc220e49de1 100644 --- a/translations/zh-CN.json +++ b/translations/zh-CN.json @@ -793,6 +793,7 @@ "The control plane node must be running for this command": "", "The cri socket path to be used": "需要使用的 cri 套接字路径", "The cri socket path to be used.": "", + "The default network for QEMU will change from 'user' to 'socket' in a future release": "", "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 driver '{{.driver}}' is not supported on {{.os}}/{{.arch}}": "{{.os}} 不支持驱动程序“{{.driver}}/{{.arch}}”", @@ -1091,10 +1092,10 @@ "minikube profile was successfully set to {{.profile_name}}": "", "minikube provisions and manages local Kubernetes clusters optimized for development workflows.": "", "minikube quickly sets up a local Kubernetes cluster": "", - "minikube service is not currently implemented with the qemu2 driver. See https://github.com/kubernetes/minikube/issues/14146 for details.": "", + "minikube service is not currently implemented with the user network on QEMU, try starting minikube with '--network=socket'": "", "minikube skips various validations when --force is supplied; this may lead to unexpected behavior": "", "minikube status --output OUTPUT. json, text": "", - "minikube tunnel is not currently implemented with the qemu2 driver. See https://github.com/kubernetes/minikube/issues/14146 for details.": "", + "minikube tunnel is not currently implemented with the user network on QEMU, try starting minikube with '--network=socket'": "", "minikube {{.version}} is available! Download it: {{.url}}": "", "mkcmp is used to compare performance of two minikube binaries": "mkcmp 用于对比两个 minikube 二进制的性能", "mount argument \"{{.value}}\" must be in form: \u003csource directory\u003e:\u003ctarget directory\u003e": "", @@ -1118,7 +1119,6 @@ "scheduled stop is not supported on the none driver, skipping scheduling": "", "service {{.namespace_name}}/{{.service_name}} has no node port": "", "set tunnel bind address, empty or '*' indicates the tunnel should be available for all interfaces": "", - "socket_vmnet network flags are not yet implemented with the qemu2 driver.\n See https://github.com/kubernetes/minikube/pull/14890 for details.": "", "stat failed": "", "status json failure": "", "status text failure": "",