Skip to content

Add ability to create extra disks on qemu2 vms #15887

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions cmd/minikube/cmd/start_flags.go
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,7 @@ func initMinikubeFlags() {
startCmd.Flags().StringP(network, "", "", "network to run minikube with. Now it is used by docker/podman and KVM drivers. If left empty, minikube will create a new network.")
startCmd.Flags().StringVarP(&outputFormat, "output", "o", "text", "Format to print stdout in. Options include: [text,json]")
startCmd.Flags().StringP(trace, "", "", "Send trace events. Options include: [gcp]")
startCmd.Flags().Int(extraDisks, 0, "Number of extra disks created and attached to the minikube VM (currently only implemented for hyperkit and kvm2 drivers)")
startCmd.Flags().Int(extraDisks, 0, "Number of extra disks created and attached to the minikube VM (currently only implemented for hyperkit, kvm2, and qemu2 drivers)")
startCmd.Flags().Duration(certExpiration, constants.DefaultCertExpiration, "Duration until minikube certificate expiration, defaults to three years (26280h).")
startCmd.Flags().String(binaryMirror, "", "Location to fetch kubectl, kubelet, & kubeadm binaries from.")
startCmd.Flags().Bool(disableOptimizations, false, "If set, disables optimizations that are set for local Kubernetes. Including decreasing CoreDNS replicas from 2 to 1. Defaults to false.")
Expand Down Expand Up @@ -940,7 +940,7 @@ func interpretWaitFlag(cmd cobra.Command) map[string]bool {
}

func checkExtraDiskOptions(cmd *cobra.Command, driverName string) {
supportedDrivers := []string{driver.HyperKit, driver.KVM2}
supportedDrivers := []string{driver.HyperKit, driver.KVM2, driver.QEMU2}

if cmd.Flags().Changed(extraDisks) {
supported := false
Expand Down
29 changes: 29 additions & 0 deletions pkg/drivers/common.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,35 @@ func ExtraDiskPath(d *drivers.BaseDriver, diskID int) string {
return filepath.Join(d.ResolveStorePath("."), file)
}

// CreateRawDisk creates a new raw disk image.
//
// Example usage:
//
// path := ExtraDiskPath(baseDriver, diskID)
// err := CreateRawDisk(path, baseDriver.DiskSize)
func CreateRawDisk(diskPath string, sizeMB int) error {
log.Infof("Creating raw disk image: %s of size %vMB", diskPath, sizeMB)

_, err := os.Stat(diskPath)
if err != nil {
if !os.IsNotExist(err) {
// un-handle-able error stat-ing the disk file
return errors.Wrap(err, "stat")
}
// disk file does not exist; create it
file, err := os.OpenFile(diskPath, os.O_CREATE|os.O_EXCL|os.O_WRONLY, 0644)
if err != nil {
return errors.Wrap(err, "open")
}
defer file.Close()

if err := file.Truncate(util.ConvertMBToBytes(sizeMB)); err != nil {
return errors.Wrap(err, "truncate")
}
}
return nil
}

// CommonDriver is the common driver base class
type CommonDriver struct{}

Expand Down
26 changes: 0 additions & 26 deletions pkg/drivers/kvm/disks.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,7 @@ package kvm
import (
"bytes"
"fmt"
"os"
"text/template"

"github.com/docker/machine/libmachine/log"
"github.com/pkg/errors"
"k8s.io/minikube/pkg/drivers"
"k8s.io/minikube/pkg/util"
)

// extraDisksTmpl ExtraDisks XML Template
Expand Down Expand Up @@ -58,23 +52,3 @@ func getExtraDiskXML(diskpath string, logicalName string) (string, error) {
}
return extraDisksXML.String(), nil
}

// createExtraDisks creates the extra disk files
func createExtraDisk(d *Driver, index int) (string, error) {
diskPath := drivers.ExtraDiskPath(d.BaseDriver, index)
log.Infof("Creating raw disk image: %s of size %v", diskPath, d.DiskSize)

if _, err := os.Stat(diskPath); os.IsNotExist(err) {
file, err := os.OpenFile(diskPath, os.O_CREATE|os.O_EXCL|os.O_WRONLY, 0644)
if err != nil {
return "", errors.Wrap(err, "open")
}
defer file.Close()

if err := file.Truncate(util.ConvertMBToBytes(d.DiskSize)); err != nil {
return "", errors.Wrap(err, "truncate")
}
}
return diskPath, nil

}
4 changes: 2 additions & 2 deletions pkg/drivers/kvm/kvm.go
Original file line number Diff line number Diff line change
Expand Up @@ -365,8 +365,8 @@ func (d *Driver) Create() (err error) {
return errors.Wrap(err, "cannot create more than 20 extra disks")
}
for i := 0; i < d.ExtraDisks; i++ {
diskpath, err := createExtraDisk(d, i)
if err != nil {
diskpath := pkgdrivers.ExtraDiskPath(d.BaseDriver, i)
if err := pkgdrivers.CreateRawDisk(diskpath, d.DiskSize); err != nil {
return errors.Wrap(err, "creating extra disks")
}
// Starting the logical names for the extra disks from hdd as the cdrom device is set to hdc.
Expand Down
20 changes: 20 additions & 0 deletions pkg/drivers/qemu/qemu.go
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ type Driver struct {
MACAddress string
SocketVMNetPath string
SocketVMNetClientPath string
ExtraDisks int
}

func (d *Driver) GetMachineName() string {
Expand Down Expand Up @@ -267,6 +268,16 @@ func (d *Driver) Create() error {
}
}

if d.ExtraDisks > 0 {
log.Info("Creating extra disk images...")
for i := 0; i < d.ExtraDisks; i++ {
path := pkgdrivers.ExtraDiskPath(d.BaseDriver, i)
if err := pkgdrivers.CreateRawDisk(path, d.DiskSize); err != nil {
return err
}
}
}

log.Info("Starting QEMU VM...")
return d.Start()
}
Expand Down Expand Up @@ -442,6 +453,15 @@ func (d *Driver) Start() error {
"virtio-9p-pci,id=fs0,fsdev=fsdev0,mount_tag=config-2")
}

for i := 0; i < d.ExtraDisks; i++ {
// use a higher index for extra disks to reduce ID collision with current or future
// low-indexed devices (e.g., firmware, ISO CDROM, cloud config, and network device)
index := i + 10
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"reduce ID collision" does not sound very promissing. Can we eliminate collisons or
avoid specificing the index, letting qemu handle this?

I don't remember that I had to specify index for drives when using multiple disks
but I usually use libvirt so maybe libvirt handles this for me.

If the intent is to be able to locate the drive later inside the guest,
it is better to specify the drive serial, which will be available in the
guest via the udev links (e.g. /dev/disk/by-id/virtio-{serial}).

It will also be better to use -device and -blockdev instead of -drive,
which I think is also required to set the serial (serial is set on
the device, not on the drive). I could not find any docs about converting
old style -drive options to -device and -blockdev. Proably the best
way to do this right is to check how libvirt does this.

Anyway I think this can be improved later.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I tried to use bus=2,unit=<id> parameters to use a different bus entirely, but those also collided with other devices like the CDROM drive in my local testing. This seemed like a simple (if fairly blunt) way of preventing that collision for other users and avoiding corner cases as best as possible if the cloud init drive or other options change in the future.

Copy link
Member

@medyagh medyagh May 16, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I also think this is not the most robust way of solving this issue, my main concern is if a minikube cluster is created and user deletes the minikube config folder without properly deleting minikube...then in the next minikube run this would colide again?

could we ensure that minikube delete --all deletes the abandoned disks ? simmilar to the orpahned disks in docker driver we have a clean up mechanim for them

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you try creating two clusters with extra disk and one without extra disk and see if there is a collision with the extra disks? And after deleting ensure that there are no disks left over

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm still confused about how the config folder being deleted could result in problems. I'll go through the behavior I am seeing from minikube, and you can let me know if I'm missing what "config" folder you are talking about.

I don't have anything in my config folder other than an empty config.json:

❯ cat ~/.minikube/config/config.json
{}

I create minikube clusters from CLI only; example:

out/minikube-darwin-arm64 -p minikube2 start --driver qemu --extra-disks 3

I have 3 minikube environments using -p. The first 2 have 3 extra disks each, and the last has no extra disks.

❯ minikube -p minikube status
minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured

❯ minikube -p minikube2 status
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured

❯ minikube -p minikube3 status
minikube3
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured

The ~/.minikube/machines dir has separate disks for each machine profile. The

 ❯ tree -h ~/.minikube/machines/
[ 224]  /Users/blaine/.minikube/machines/
├── [ 416]  minikube
│   ├── [328M]  boot2docker.iso
│   ├── [3.2K]  config.json
│   ├── [827M]  disk.qcow2
│   ├── [4.5K]  disk.qcow2.raw
│   ├── [1.6K]  id_rsa
│   ├── [ 381]  id_rsa.pub
│   ├── [ 20G]  minikube-0.rawdisk
│   ├── [ 20G]  minikube-1.rawdisk
│   ├── [ 20G]  minikube-2.rawdisk
│   ├── [   0]  monitor
│   └── [   6]  qemu.pid
├── [ 416]  minikube2
│   ├── [328M]  boot2docker.iso
│   ├── [3.2K]  config.json
│   ├── [804M]  disk.qcow2
│   ├── [4.5K]  disk.qcow2.raw
│   ├── [1.6K]  id_rsa
│   ├── [ 381]  id_rsa.pub
│   ├── [ 20G]  minikube2-0.rawdisk
│   ├── [ 20G]  minikube2-1.rawdisk
│   ├── [ 20G]  minikube2-2.rawdisk
│   ├── [   0]  monitor
│   └── [   6]  qemu.pid
├── [ 320]  minikube3
│   ├── [328M]  boot2docker.iso
│   ├── [3.2K]  config.json
│   ├── [ 11M]  disk.qcow2
│   ├── [4.5K]  disk.qcow2.raw
│   ├── [1.6K]  id_rsa
│   ├── [ 381]  id_rsa.pub
│   ├── [   0]  monitor
│   └── [   6]  qemu.pid
├── [1.6K]  server-key.pem
└── [1.2K]  server.pem

4 directories, 32 files

As an example, the machine config for profile minikube2, located in the minikube2 subdir, looks like this:

❯ cat ~/.minikube/machines/minikube2/config.json
{
    "ConfigVersion": 3,
    "Driver": {
        "IPAddress": "192.168.105.13",
        "MachineName": "minikube2",
        "SSHUser": "docker",
        "SSHPort": 22,
        "SSHKeyPath": "",
        "StorePath": "/Users/blaine/.minikube",
        "SwarmMaster": false,
        "SwarmHost": "",
        "SwarmDiscovery": "",
        "EnginePort": 2376,
        "FirstQuery": true,
        "Memory": 6000,
        "DiskSize": 20000,
        "CPU": 2,
        "Program": "qemu-system-aarch64",
        "BIOS": false,
        "CPUType": "host",
        "MachineType": "virt",
        "Firmware": "/opt/homebrew/Cellar/qemu/8.0.0/share/qemu/edk2-aarch64-code.fd",
        "Display": false,
        "DisplayType": "",
        "Nographic": false,
        "VirtioDrives": false,
        "Network": "socket_vmnet",
        "PrivateNetwork": "",
        "Boot2DockerURL": "file:///Users/blaine/.minikube/cache/iso/arm64/minikube-v1.30.1-1685960108-16634-arm64.iso",
        "CaCertPath": "",
        "PrivateKeyPath": "",
        "DiskPath": "/Users/blaine/.minikube/machines/minikube2/minikube2.img",
        "CacheMode": "default",
        "IOMode": "threads",
        "UserDataFile": "",
        "CloudConfigRoot": "",
        "LocalPorts": "",
        "MACAddress": "4a:7c:ba:dc:1a:ea",
        "SocketVMNetPath": "/opt/homebrew/var/run/socket_vmnet",
        "SocketVMNetClientPath": "/opt/homebrew/opt/socket_vmnet/bin/socket_vmnet_client",
        "ExtraDisks": 3      #### <--- extra disks 
    },
    "DriverName": "qemu2",
    "HostOptions": {
        "Driver": "",
        "Memory": 0,
        "Disk": 0,
        "EngineOptions": {
            "ArbitraryFlags": null,
            "Dns": null,
            "GraphDir": "",
            "Env": null,
            "Ipv6": false,
            "InsecureRegistry": [
                "10.96.0.0/12"
            ],
            "Labels": null,
            "LogLevel": "",
            "StorageDriver": "",
            "SelinuxEnabled": false,
            "TlsVerify": false,
            "RegistryMirror": [],
            "InstallURL": "https://get.docker.com"
        },
        "SwarmOptions": {
            "IsSwarm": false,
            "Address": "",
            "Discovery": "",
            "Agent": false,
            "Master": false,
            "Host": "",
            "Image": "",
            "Strategy": "",
            "Heartbeat": 0,
            "Overcommit": 0,
            "ArbitraryFlags": null,
            "ArbitraryJoinFlags": null,
            "Env": null,
            "IsExperimental": false
        },
        "AuthOptions": {
            "CertDir": "/Users/blaine/.minikube",
            "CaCertPath": "/Users/blaine/.minikube/certs/ca.pem",
            "CaPrivateKeyPath": "/Users/blaine/.minikube/certs/ca-key.pem",
            "CaCertRemotePath": "",
            "ServerCertPath": "/Users/blaine/.minikube/machines/server.pem",
            "ServerKeyPath": "/Users/blaine/.minikube/machines/server-key.pem",
            "ClientKeyPath": "/Users/blaine/.minikube/certs/key.pem",
            "ServerCertRemotePath": "",
            "ServerKeyRemotePath": "",
            "ClientCertPath": "/Users/blaine/.minikube/certs/cert.pem",
            "ServerCertSANs": null,
            "StorePath": "/Users/blaine/.minikube"
        }
    },
    "Name": "minikube2"
}

And the qemu processes that are running are using the correct disks for all 3 vms

❯ ps aux | grep qemu
blaine           82748  36.0  2.7 415963040 913104   ??  R     4:35PM   5:21.61 qemu-system-aarch64 -M virt -cpu host -drive file=/opt/homebrew/Cellar/qemu/8.0.0/share/qemu/edk2-aarch64-code.fd,readonly=on,format=raw,if=pflash -display none -accel hvf -m 6000 -smp 2 -boot d -cdrom /Users/blaine/.minikube/machines/minikube/boot2docker.iso -qmp unix:/Users/blaine/.minikube/machines/minikube/monitor,server,nowait -pidfile /Users/blaine/.minikube/machines/minikube/qemu.pid -device virtio-net-pci,netdev=net0,mac=86:a2:0b:5f:76:3c -netdev socket,id=net0,fd=3 -daemonize -drive file=/Users/blaine/.minikube/machines/minikube/minikube-0.rawdisk,index=10,media=disk,format=raw,if=virtio -drive file=/Users/blaine/.minikube/machines/minikube/minikube-1.rawdisk,index=11,media=disk,format=raw,if=virtio -drive file=/Users/blaine/.minikube/machines/minikube/minikube-2.rawdisk,index=12,media=disk,format=raw,if=virtio /Users/blaine/.minikube/machines/minikube/disk.qcow2

blaine           84109  43.3  4.8 415686416 1620032   ??  R     4:44PM   0:57.26 qemu-system-aarch64 -M virt -cpu host -drive file=/opt/homebrew/Cellar/qemu/8.0.0/share/qemu/edk2-aarch64-code.fd,readonly=on,format=raw,if=pflash -display none -accel hvf -m 6000 -smp 2 -boot d -cdrom /Users/blaine/.minikube/machines/minikube2/boot2docker.iso -qmp unix:/Users/blaine/.minikube/machines/minikube2/monitor,server,nowait -pidfile /Users/blaine/.minikube/machines/minikube2/qemu.pid -device virtio-net-pci,netdev=net0,mac=4a:7c:ba:dc:1a:ea -netdev socket,id=net0,fd=3 -daemonize -drive file=/Users/blaine/.minikube/machines/minikube2/minikube2-0.rawdisk,index=10,media=disk,format=raw,if=virtio -drive file=/Users/blaine/.minikube/machines/minikube2/minikube2-1.rawdisk,index=11,media=disk,format=raw,if=virtio -drive file=/Users/blaine/.minikube/machines/minikube2/minikube2-2.rawdisk,index=12,media=disk,format=raw,if=virtio /Users/blaine/.minikube/machines/minikube2/disk.qcow2

blaine           84626   2.0  5.4 415555568 1803312   ??  S     4:48PM   0:12.60 qemu-system-aarch64 -M virt -cpu host -drive file=/opt/homebrew/Cellar/qemu/8.0.0/share/qemu/edk2-aarch64-code.fd,readonly=on,format=raw,if=pflash -display none -accel hvf -m 6000 -smp 2 -boot d -cdrom /Users/blaine/.minikube/machines/minikube3/boot2docker.iso -qmp unix:/Users/blaine/.minikube/machines/minikube3/monitor,server,nowait -pidfile /Users/blaine/.minikube/machines/minikube3/qemu.pid -device virtio-net-pci,netdev=net0,mac=92:db:51:c6:b9:1d -netdev socket,id=net0,fd=3 -daemonize /Users/blaine/.minikube/machines/minikube3/disk.qcow2

If I delete the first minikube cluster, all disks are removed:

❯ out/minikube-darwin-arm64 -p minikube delete                 
🔥  Deleting "minikube" in qemu2 ...
💀  Removed all traces of the "minikube" cluster.

❯ tree -h ~/.minikube/machines                
[ 192]  /Users/blaine/.minikube/machines
├── [ 416]  minikube2
│   ├── [328M]  boot2docker.iso
│   ├── [3.2K]  config.json
│   ├── [810M]  disk.qcow2
│   ├── [4.5K]  disk.qcow2.raw
│   ├── [1.6K]  id_rsa
│   ├── [ 381]  id_rsa.pub
│   ├── [ 20G]  minikube2-0.rawdisk
│   ├── [ 20G]  minikube2-1.rawdisk
│   ├── [ 20G]  minikube2-2.rawdisk
│   ├── [   0]  monitor
│   └── [   6]  qemu.pid
├── [ 320]  minikube3
│   ├── [328M]  boot2docker.iso
│   ├── [3.2K]  config.json
│   ├── [813M]  disk.qcow2
│   ├── [4.5K]  disk.qcow2.raw
│   ├── [1.6K]  id_rsa
│   ├── [ 381]  id_rsa.pub
│   ├── [   0]  monitor
│   └── [   6]  qemu.pid
├── [1.6K]  server-key.pem
└── [1.2K]  server.pem

3 directories, 21 files

I can still ssh to minikube2, lsblk shows vd[b-d] are the extra disks, and partprobe reads the disk successfully.

❯ minikube -p minikube2 ssh                                                 ✘ INT
                         _             _
            _         _ ( )           ( )
  ___ ___  (_)  ___  (_)| |/')  _   _ | |_      __
/' _ ` _ `\| |/' _ `\| || , <  ( ) ( )| '_`\  /'__`\
| ( ) ( ) || || ( ) || || |\`\ | (_) || |_) )(  ___/
(_) (_) (_)(_)(_) (_)(_)(_) (_)`\___/'(_,__/'`\____)

$ hostname
minikube2
$ lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
vda    254:0    0 327.8M  1 disk
vdb    254:16   0  19.5G  0 disk
vdc    254:32   0  19.5G  0 disk
vdd    254:48   0  19.5G  0 disk
vde    254:64   0  19.5G  0 disk
`-vde1 254:65   0  19.5G  0 part /var/lib/minishift
                                 /var/lib/toolbox
                                 /var/lib/minikube
                                 /tmp/hostpath-provisioner
                                 /tmp/hostpath_pv
                                 /data
                                 /var/lib/cni
                                 /var/lib/kubelet
                                 /var/tmp
                                 /var/log
                                 /var/lib/containers
                                 /var/lib/buildkit
                                 /var/lib/containerd
                                 /var/lib/docker
                                 /var/lib/boot2docker
                                 /mnt/vde1
$ sudo partprobe /dev/vdb

minikube delete --all deletes the remaining VMs

❯ out/minikube-darwin-arm64 delete --all      
🔥  Deleting "minikube2" in qemu2 ...
💀  Removed all traces of the "minikube2" cluster.
🔥  Deleting "minikube3" in qemu2 ...
💀  Removed all traces of the "minikube3" cluster.
🔥  Successfully deleted all profiles

❯ tree -h ~/.minikube/machines          
[ 128]  /Users/blaine/.minikube/machines
├── [1.6K]  server-key.pem
└── [1.2K]  server.pem

1 directory, 2 files

minikube delete --all --purge deletes the whole ~/.minikube dir.

Does this sufficiently show that disks are handled correctly in the case of multiple differently-configured clusters?

startCmd = append(startCmd,
"-drive", fmt.Sprintf("file=%s,index=%d,media=disk,format=raw,if=virtio", pkgdrivers.ExtraDiskPath(d.BaseDriver, i), index),
)
}

if d.VirtioDrives {
startCmd = append(startCmd,
"-drive", fmt.Sprintf("file=%s,index=0,media=disk,if=virtio", d.diskPath()))
Expand Down
1 change: 1 addition & 0 deletions pkg/minikube/registry/drvs/qemu2/qemu2.go
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,7 @@ func configure(cc config.ClusterConfig, n config.Node) (interface{}, error) {
MACAddress: mac,
SocketVMNetPath: cc.SocketVMnetPath,
SocketVMNetClientPath: cc.SocketVMnetClientPath,
ExtraDisks: cc.ExtraDisks,
}, nil
}

Expand Down
2 changes: 1 addition & 1 deletion site/content/en/docs/commands/start.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ minikube start [flags]
The key should be '.' separated, and the first part before the dot is the component to apply the configuration to.
Valid components are: kubelet, kubeadm, apiserver, controller-manager, etcd, proxy, scheduler
Valid kubeadm parameters: ignore-preflight-errors, dry-run, kubeconfig, kubeconfig-dir, node-name, cri-socket, experimental-upload-certs, certificate-key, rootfs, skip-phases, pod-network-cidr
--extra-disks int Number of extra disks created and attached to the minikube VM (currently only implemented for hyperkit and kvm2 drivers)
--extra-disks int Number of extra disks created and attached to the minikube VM (currently only implemented for hyperkit, kvm2, and qemu2 drivers)
--feature-gates string A set of key=value pairs that describe feature gates for alpha/experimental features.
--force Force minikube to perform possibly dangerous operations
--force-systemd If set, force the container runtime to use systemd as cgroup manager. Defaults to false.
Expand Down
1 change: 1 addition & 0 deletions translations/de.json
Original file line number Diff line number Diff line change
Expand Up @@ -456,6 +456,7 @@
"Noticed you have an activated podman-env on {{.driver_name}} driver in this terminal:": "Aktivives podman-env am Treiber {{.driver_name}} in diesem Terminal erkannt:",
"Number of CPUs allocated to the minikube VM": "Anzahl der CPUs, die der minikube-VM zugeordnet sind",
"Number of extra disks created and attached to the minikube VM (currently only implemented for hyperkit and kvm2 drivers)": "Anzahl der Extra-Disks, die erstellt und an die Minikube VM geängt werden (derzeit nur im hyperkit und kvm2 Treiber implementiert)",
"Number of extra disks created and attached to the minikube VM (currently only implemented for hyperkit, kvm2, and qemu2 drivers)": "",
"Number of lines back to go within the log": "Anzahl der Zeilen, die im Log zurückgegangen werden soll",
"OS release is {{.pretty_name}}": "Die Betriebssystem-Version ist {{.pretty_name}}",
"One of 'text', 'yaml' or 'json'.": "Entweder 'text', 'yaml' oder 'json'.",
Expand Down
2 changes: 1 addition & 1 deletion translations/es.json
Original file line number Diff line number Diff line change
Expand Up @@ -463,7 +463,7 @@
"Noticed you have an activated docker-env on {{.driver_name}} driver in this terminal:": "",
"Noticed you have an activated podman-env on {{.driver_name}} driver in this terminal:": "",
"Number of CPUs allocated to the minikube VM": "Número de CPU asignadas a la VM de minikube",
"Number of extra disks created and attached to the minikube VM (currently only implemented for hyperkit and kvm2 drivers)": "",
"Number of extra disks created and attached to the minikube VM (currently only implemented for hyperkit, kvm2, and qemu2 drivers)": "",
"Number of lines back to go within the log": "",
"OS release is {{.pretty_name}}": "",
"One of 'text', 'yaml' or 'json'.": "",
Expand Down
1 change: 1 addition & 0 deletions translations/fr.json
Original file line number Diff line number Diff line change
Expand Up @@ -445,6 +445,7 @@
"Noticed you have an activated docker-env on {{.driver_name}} driver in this terminal:": "Vous avez remarqué que vous avez un docker-env activé sur le pilote {{.driver_name}} dans ce terminal :",
"Noticed you have an activated podman-env on {{.driver_name}} driver in this terminal:": "Vous avez remarqué que vous avez un pilote podman-env activé sur {{.driver_name}} dans ce terminal :",
"Number of extra disks created and attached to the minikube VM (currently only implemented for hyperkit and kvm2 drivers)": "Nombre de disques supplémentaires créés et attachés à la machine virtuelle minikube (actuellement implémenté uniquement pour les pilotes hyperkit et kvm2)",
"Number of extra disks created and attached to the minikube VM (currently only implemented for hyperkit, kvm2, and qemu2 drivers)": "",
"Number of lines back to go within the log": "Nombre de lignes à remonter dans le journal",
"OS release is {{.pretty_name}}": "La version du système d'exploitation est {{.pretty_name}}",
"One of 'text', 'yaml' or 'json'.": "Un parmi 'text', 'yaml' ou 'json'.",
Expand Down
1 change: 1 addition & 0 deletions translations/ja.json
Original file line number Diff line number Diff line change
Expand Up @@ -431,6 +431,7 @@
"Noticed you have an activated docker-env on {{.driver_name}} driver in this terminal:": "通知: このターミナルでは、{{.driver_name}} ドライバーの docker-env が有効になっています:",
"Noticed you have an activated podman-env on {{.driver_name}} driver in this terminal:": "通知: このターミナルでは、{{.driver_name}} ドライバーの podman-env が有効になっています:",
"Number of extra disks created and attached to the minikube VM (currently only implemented for hyperkit and kvm2 drivers)": "作成して minikube VM に接続する追加ディスク数 (現在、hyperkit と kvm2 ドライバーでのみ実装されています)",
"Number of extra disks created and attached to the minikube VM (currently only implemented for hyperkit, kvm2, and qemu2 drivers)": "",
"Number of lines back to go within the log": "ログ中で遡る行数",
"OS release is {{.pretty_name}}": "OS リリースは {{.pretty_name}} です",
"One of 'text', 'yaml' or 'json'.": "'text'、'yaml'、'json' のいずれか。",
Expand Down
2 changes: 1 addition & 1 deletion translations/ko.json
Original file line number Diff line number Diff line change
Expand Up @@ -476,7 +476,7 @@
"None of the known repositories in your location are accessible. Using {{.image_repository_name}} as fallback.": "",
"Noticed you have an activated docker-env on {{.driver_name}} driver in this terminal:": "",
"Noticed you have an activated podman-env on {{.driver_name}} driver in this terminal:": "",
"Number of extra disks created and attached to the minikube VM (currently only implemented for hyperkit and kvm2 drivers)": "",
"Number of extra disks created and attached to the minikube VM (currently only implemented for hyperkit, kvm2, and qemu2 drivers)": "",
"Number of lines back to go within the log": "",
"OS release is {{.pretty_name}}": "",
"One of 'text', 'yaml' or 'json'.": "",
Expand Down
2 changes: 1 addition & 1 deletion translations/pl.json
Original file line number Diff line number Diff line change
Expand Up @@ -468,7 +468,7 @@
"Number of CPUs allocated to Kubernetes.": "Liczba procesorów przypisana do Kubernetesa",
"Number of CPUs allocated to the minikube VM": "Liczba procesorów przypisana do maszyny wirtualnej minikube",
"Number of CPUs allocated to the minikube VM.": "Liczba procesorów przypisana do maszyny wirtualnej minikube",
"Number of extra disks created and attached to the minikube VM (currently only implemented for hyperkit and kvm2 drivers)": "",
"Number of extra disks created and attached to the minikube VM (currently only implemented for hyperkit, kvm2, and qemu2 drivers)": "",
"Number of lines back to go within the log": "",
"OS release is {{.pretty_name}}": "Wersja systemu operacyjnego to {{.pretty_name}}",
"One of 'text', 'yaml' or 'json'.": "",
Expand Down
2 changes: 1 addition & 1 deletion translations/ru.json
Original file line number Diff line number Diff line change
Expand Up @@ -426,7 +426,7 @@
"None of the known repositories in your location are accessible. Using {{.image_repository_name}} as fallback.": "",
"Noticed you have an activated docker-env on {{.driver_name}} driver in this terminal:": "",
"Noticed you have an activated podman-env on {{.driver_name}} driver in this terminal:": "",
"Number of extra disks created and attached to the minikube VM (currently only implemented for hyperkit and kvm2 drivers)": "",
"Number of extra disks created and attached to the minikube VM (currently only implemented for hyperkit, kvm2, and qemu2 drivers)": "",
"Number of lines back to go within the log": "",
"OS release is {{.pretty_name}}": "",
"One of 'text', 'yaml' or 'json'.": "",
Expand Down
2 changes: 1 addition & 1 deletion translations/strings.txt
Original file line number Diff line number Diff line change
Expand Up @@ -426,7 +426,7 @@
"None of the known repositories in your location are accessible. Using {{.image_repository_name}} as fallback.": "",
"Noticed you have an activated docker-env on {{.driver_name}} driver in this terminal:": "",
"Noticed you have an activated podman-env on {{.driver_name}} driver in this terminal:": "",
"Number of extra disks created and attached to the minikube VM (currently only implemented for hyperkit and kvm2 drivers)": "",
"Number of extra disks created and attached to the minikube VM (currently only implemented for hyperkit, kvm2, and qemu2 drivers)": "",
"Number of lines back to go within the log": "",
"OS release is {{.pretty_name}}": "",
"One of 'text', 'yaml' or 'json'.": "",
Expand Down
2 changes: 1 addition & 1 deletion translations/zh-CN.json
Original file line number Diff line number Diff line change
Expand Up @@ -543,7 +543,7 @@
"Noticed you have an activated docker-env on {{.driver_name}} driver in this terminal:": "",
"Noticed you have an activated podman-env on {{.driver_name}} driver in this terminal:": "",
"Number of CPUs allocated to the minikube VM": "分配给 minikube 虚拟机的 CPU 的数量",
"Number of extra disks created and attached to the minikube VM (currently only implemented for hyperkit and kvm2 drivers)": "",
"Number of extra disks created and attached to the minikube VM (currently only implemented for hyperkit, kvm2, and qemu2 drivers)": "",
"Number of lines back to go within the log": "",
"OS release is {{.pretty_name}}": "",
"One of 'text', 'yaml' or 'json'.": "",
Expand Down