mirror of
https://github.com/openshift/openshift-docs.git
synced 2026-02-05 12:46:18 +01:00
343 lines
13 KiB
Plaintext
343 lines
13 KiB
Plaintext
// Module included in the following assemblies:
|
|
//
|
|
// * virt/getting_started/virt-using-the-cli-tools.adoc
|
|
|
|
:_mod-docs-content-type: REFERENCE
|
|
[id="virt-virtctl-commands_{context}"]
|
|
= virtctl commands
|
|
|
|
The `virtctl` client is a command-line utility for managing {VirtProductName} resources.
|
|
|
|
[NOTE]
|
|
====
|
|
The virtual machine (VM) commands also apply to virtual machine instances (VMIs) unless otherwise specified.
|
|
====
|
|
|
|
// apinnick: I recommend not breaking these sections into separate modules because of maintenance issues.
|
|
// These sections will never be used independently.
|
|
|
|
[id='virtctl-information-commands_{context}']
|
|
== virtctl information commands
|
|
|
|
You use `virtctl` information commands to view information about the `virtctl` client.
|
|
|
|
.Information commands
|
|
[width="100%",cols="1a,2a",options="header"]
|
|
|===
|
|
|Command |Description
|
|
|`virtctl version`
|
|
|View the `virtctl` client and server versions.
|
|
|
|
|`virtctl help`
|
|
|View a list of `virtctl` commands.
|
|
|
|
|`virtctl <command> -h\|--help`
|
|
|View a list of options for a specific command.
|
|
|
|
|`virtctl options`
|
|
|View a list of global command options for any `virtctl` command.
|
|
|===
|
|
|
|
[id='vm-information-commands_{context}']
|
|
== VM information commands
|
|
|
|
You can use `virtctl` to view information about virtual machines (VMs) and virtual machine instances (VMIs).
|
|
|
|
.VM information commands
|
|
[width="100%",cols="1a,2a",options="header"]
|
|
|===
|
|
|Command |Description
|
|
|`virtctl fslist <vm_name>`
|
|
|View the file systems available on a guest machine.
|
|
|
|
|`virtctl guestosinfo <vm_name>`
|
|
|View information about the operating systems on a guest machine.
|
|
|
|
|`virtctl userlist <vm_name>`
|
|
|View the logged-in users on a guest machine.
|
|
|===
|
|
|
|
[id="vm-manifest-creation-commands_{context}"]
|
|
== VM manifest creation commands
|
|
|
|
You can use `virtctl create` commands to create manifests for virtual machines, instance types, and preferences.
|
|
|
|
.VM manifest creation commands
|
|
[width="100%",cols="2a,1a",options="header"]
|
|
|===
|
|
|Command |Description
|
|
|
|
|`virtctl create vm`::
|
|
|Create a `VirtualMachine` (VM) manifest.
|
|
|
|
|`virtctl create vm --name <vm_name>`
|
|
|Create a VM manifest, specifying a name for the VM.
|
|
|
|
|`virtctl create vm --user <user_name> --ssh-key\|password-file=<value>`
|
|
|Create a VM manifest with a cloud-init configuration to create the selected user and either add an SSH public key from the supplied string, or a password from a file.
|
|
|
|
|`virtctl create vm --access-cred type:password,src:<secret>`
|
|
|Create a VM manifest with a user and password combination injected from the selected secret.
|
|
|
|
|`virtctl create vm --access-cred type:ssh,src:<secret>,user:<user_name>`
|
|
|Create a VM manifest with an SSH public key injected from the selected secret.
|
|
|
|
|`virtctl create vm --volume-sysprep src:<config_map>`
|
|
|Create a VM manifest, specifying a config map to use as the sysprep volume. The config map must contain a valid answer file named `unattend.xml` or `autounattend.xml`.
|
|
|
|
|`virtctl create vm --instancetype <instancetype_name>`
|
|
|Create a VM manifest that uses an existing cluster-wide instance type.
|
|
|
|
|`virtctl create vm --instancetype=virtualmachineinstancetype/<instancetype_name>`
|
|
|Create a VM manifest that uses an existing namespaced instance type.
|
|
|
|
|`virtctl create instancetype --cpu <cpu_value> --memory <memory_value> --name <instancetype_name>`
|
|
|Create a manifest for a cluster-wide instance type.
|
|
|
|
|`virtctl create instancetype --cpu <cpu_value> --memory <memory_value> --name <instancetype_name> --namespace <namespace_value>`
|
|
|Create a manifest for a namespaced instance type.
|
|
|
|
|`virtctl create preference --name <preference_name>`
|
|
|Create a manifest for a cluster-wide VM preference, specifying a name for the preference.
|
|
|
|
|`virtctl create preference --namespace <namespace_value>`
|
|
|Create a manifest for a namespaced VM preference.
|
|
|===
|
|
|
|
[id='vm-management-commands_{context}']
|
|
== VM management commands
|
|
|
|
You use `virtctl` virtual machine (VM) management commands to manage and migrate virtual machines (VMs) and virtual machine instances (VMIs).
|
|
|
|
.VM management commands
|
|
[width="100%",cols="1a,2a",options="header"]
|
|
|===
|
|
|Command |Description
|
|
|
|
|`virtctl start <vm_name>`
|
|
|Start a VM.
|
|
|
|
|`virtctl start --paused <vm_name>`
|
|
|Start a VM in a paused state. This option enables you to interrupt the boot process from the VNC console.
|
|
|
|
|`virtctl stop <vm_name>`
|
|
|Stop a VM.
|
|
|
|
|`virtctl stop <vm_name> --grace-period 0 --force`
|
|
|Force stop a VM. This option might cause data inconsistency or data loss.
|
|
|
|
|`virtctl pause vm <vm_name>`
|
|
|Pause a VM. The machine state is kept in memory.
|
|
|
|
|`virtctl unpause vm <vm_name>`
|
|
|Unpause a VM.
|
|
|
|
|`virtctl migrate <vm_name>`
|
|
|Migrate a VM.
|
|
|
|
|`virtctl migrate-cancel <vm_name>`
|
|
|Cancel a VM migration.
|
|
|
|
|`virtctl restart <vm_name>`
|
|
|Restart a VM.
|
|
|===
|
|
|
|
[id='vm-connection-commands_{context}']
|
|
== VM connection commands
|
|
|
|
You use `virtctl` connection commands to expose ports and connect to virtual machines (VMs) and virtual machine instances (VMIs).
|
|
|
|
.VM connection commands
|
|
[width="100%",cols="1a,2a",options="header"]
|
|
|===
|
|
|Command |Description
|
|
|`virtctl console <vm_name>`
|
|
|Connect to the serial console of a VM.
|
|
|
|
|`virtctl expose vm <vm_name> --name <service_name> --type <ClusterIP\|NodePort\|LoadBalancer> --port <port>`
|
|
|Create a service that forwards a designated port of a VM and expose the service on the specified port of the node.
|
|
|
|
Example: `virtctl expose vm rhel9_vm --name rhel9-ssh --type NodePort --port 22`
|
|
|
|
|`virtctl scp -i <ssh_key> <file_name> <user_name>@<vm_name>`
|
|
|Copy a file from your machine to a VM. This command uses the private key of an SSH key pair. The VM must be configured with the public key.
|
|
|
|
|`virtctl scp -i <ssh_key> <user_name@<vm_name>:<file_name> .`
|
|
|Copy a file from a VM to your machine. This command uses the private key of an SSH key pair. The VM must be configured with the public key.
|
|
|
|
|`virtctl ssh -i <ssh_key> <user_name>@<vm_name>`
|
|
|Open an SSH connection with a VM. This command uses the private key of an SSH key pair. The VM must be configured with the public key.
|
|
|
|
|`virtctl vnc <vm_name>`
|
|
|Connect to the VNC console of a VM.
|
|
|
|
You must have `virt-viewer` installed.
|
|
|
|
|`virtctl vnc --proxy-only=true <vm_name>`
|
|
|Display the port number and connect manually to a VM by using any viewer through the VNC connection.
|
|
|
|
|`virtctl vnc --port=<port-number> <vm_name>`
|
|
|Specify a port number to run the proxy on the specified port, if that port is available.
|
|
|
|
If a port number is not specified, the proxy runs on a random port.
|
|
|===
|
|
|
|
[id='vm-volume-export-commands_{context}']
|
|
== VM export commands
|
|
|
|
Use `virtctl vmexport` commands to create, download, or delete a volume exported from a VM, VM snapshot, or persistent volume claim (PVC). Certain manifests also contain a header secret, which grants access to the endpoint to import a disk image in a format that {VirtProductName} can use.
|
|
|
|
.VM export commands
|
|
[width="100%",cols="1a,2a",options="header"]
|
|
|===
|
|
|Command |Description
|
|
|`virtctl vmexport create <vmexport_name> --vm\|snapshot\|pvc=<object_name>`
|
|
|Create a `VirtualMachineExport` custom resource (CR) to export a volume from a VM, VM snapshot, or PVC.
|
|
|
|
* `--vm`: Exports the PVCs of a VM.
|
|
* `--snapshot`: Exports the PVCs contained in a `VirtualMachineSnapshot` CR.
|
|
* `--pvc`: Exports a PVC.
|
|
* Optional: `--ttl=1h` specifies the time to live. The default duration is 2 hours.
|
|
|
|
|`virtctl vmexport delete <vmexport_name>`
|
|
|Delete a `VirtualMachineExport` CR manually.
|
|
|
|
|`virtctl vmexport download <vmexport_name> --output=<output_file> --volume=<volume_name>`
|
|
|Download the volume defined in a `VirtualMachineExport` CR.
|
|
|
|
* `--output` specifies the file format. Example: `disk.img.gz`.
|
|
* `--volume` specifies the volume to download. This flag is optional if only one volume is available.
|
|
|
|
Optional:
|
|
|
|
* `--keep-vme` retains the `VirtualMachineExport` CR after download. The default behavior is to delete the `VirtualMachineExport` CR after download.
|
|
* `--insecure` enables an insecure HTTP connection.
|
|
|
|
|`virtctl vmexport download <vmexport_name> --vm\|snapshot\|pvc=<object_name> --output=<output_file> --volume=<volume_name>`
|
|
|Create a `VirtualMachineExport` CR and then download the volume defined in the CR.
|
|
|
|
|`virtctl vmexport download export --manifest`
|
|
|Retrieve the manifest for an existing export. The manifest does not include the header secret.
|
|
|
|
|`virtctl vmexport download export --manifest --vm=example`
|
|
|Create a VM export for a VM example, and retrieve the manifest. The manifest does not include the header secret.
|
|
|
|
|`virtctl vmexport download export --manifest --snap=example`
|
|
|Create a VM export for a VM snapshot example, and retrieve the manifest. The manifest does not include the header secret.
|
|
|
|
|`virtctl vmexport download export --manifest --include-secret`
|
|
|Retrieve the manifest for an existing export. The manifest includes the header secret.
|
|
|
|
|`virtctl vmexport download export --manifest --manifest-output-format=json`
|
|
|Retrieve the manifest for an existing export in json format. The manifest does not include the header secret.
|
|
|
|
|`virtctl vmexport download export --manifest --include-secret --output=manifest.yaml`
|
|
|Retrieve the manifest for an existing export. The manifest includes the header secret and writes it to the file specified.
|
|
|===
|
|
|
|
[id='vm-memory-dump-commands_{context}']
|
|
== VM memory dump commands
|
|
|
|
You can use the `virtctl memory-dump` command to output a VM memory dump on a PVC. You can specify an existing PVC or use the `--create-claim` flag to create a new PVC.
|
|
|
|
.Prerequisites
|
|
|
|
* The PVC volume mode must be `FileSystem`.
|
|
* The PVC must be large enough to contain the memory dump.
|
|
+
|
|
The formula for calculating the PVC size is `(VMMemorySize + 100Mi) * FileSystemOverhead`, where `100Mi` is the memory dump overhead.
|
|
|
|
* You must enable the hot plug feature gate in the `HyperConverged` custom resource by running the following command:
|
|
+
|
|
[source,terminal,subs="attributes+"]
|
|
----
|
|
$ oc patch hyperconverged kubevirt-hyperconverged -n {CNVNamespace} \
|
|
--type json -p '[{"op": "add", "path": "/spec/featureGates", \
|
|
"value": "HotplugVolumes"}]'
|
|
----
|
|
|
|
.Downloading the memory dump
|
|
|
|
You must use the `virtctl vmexport download` command to download the memory dump:
|
|
|
|
[source,terminal]
|
|
----
|
|
$ virtctl vmexport download <vmexport_name> --vm|pvc=<object_name> \
|
|
--volume=<volume_name> --output=<output_file>
|
|
----
|
|
|
|
.VM memory dump commands
|
|
[width="100%",cols="1a,2a",options="header"]
|
|
|===
|
|
|Command |Description
|
|
|`virtctl memory-dump get <vm_name> --claim-name=<pvc_name>`
|
|
|Save the memory dump of a VM on a PVC. The memory dump status is displayed in the `status` section of the `VirtualMachine` resource.
|
|
|
|
Optional:
|
|
|
|
* `--create-claim` creates a new PVC with the appropriate size. This flag has the following options:
|
|
|
|
** `--storage-class=<storage_class>`: Specify a storage class for the PVC.
|
|
** `--access-mode=<access_mode>`: Specify `ReadWriteOnce` or `ReadWriteMany`.
|
|
|
|
|`virtctl memory-dump get <vm_name>`
|
|
|Rerun the `virtctl memory-dump` command with the same PVC.
|
|
|
|
This command overwrites the previous memory dump.
|
|
|
|
|`virtctl memory-dump remove <vm_name>`
|
|
|Remove a memory dump.
|
|
|
|
You must remove a memory dump manually if you want to change the target PVC.
|
|
|
|
This command removes the association between the VM and the PVC, so that the memory dump is not displayed in the `status` section of the `VirtualMachine` resource. The PVC is not affected.
|
|
|===
|
|
|
|
// hot-plug/unplug NICs will be added in 4.14
|
|
[id="hot-plug-and-hot-unplug-commands_{context}"]
|
|
== Hot plug and hot unplug commands
|
|
|
|
You use `virtctl` to add or remove resources from running virtual machines (VMs) and virtual machine instances (VMIs).
|
|
|
|
.Hot plug and hot unplug commands
|
|
[width="100%",cols="1a,2a",options="header"]
|
|
|===
|
|
|Command |Description
|
|
|`virtctl addvolume <vm_name> --volume-name=<datavolume_or_PVC> [--persist] [--serial=<label>]`
|
|
|Hot plug a data volume or persistent volume claim (PVC).
|
|
|
|
Optional:
|
|
|
|
* `--persist` mounts the virtual disk permanently on a VM. *This flag does not apply to VMIs.*
|
|
* `--serial=<label>` adds a label to the VM. If you do not specify a label, the default label is the data volume or PVC name.
|
|
|
|
|`virtctl removevolume <vm_name> --volume-name=<virtual_disk>`
|
|
|Hot unplug a virtual disk.
|
|
|
|
|`virtctl addinterface <vm_name> --network-attachment-definition-name <net_attach_def_name> --name <interface_name>`
|
|
|Hot plug a Linux bridge network interface.
|
|
|
|
|`virtctl removeinterface <vm_name> --name <interface_name>`
|
|
|Hot unplug a Linux bridge network interface.
|
|
|===
|
|
|
|
[id='image-upload-commands_{context}']
|
|
== Image upload commands
|
|
|
|
You use the `virtctl image-upload` commands to upload a VM image to a data volume.
|
|
|
|
.Image upload commands
|
|
[width="100%",cols="1a,2a",options="header"]
|
|
|===
|
|
|Command |Description
|
|
|`virtctl image-upload dv <datavolume_name> --image-path=</path/to/image> --no-create`
|
|
|Upload a VM image to a data volume that already exists.
|
|
|
|
|`virtctl image-upload dv <datavolume_name> --size=<datavolume_size> --image-path=</path/to/image>`
|
|
|Upload a VM image to a new data volume of a specified requested size.
|
|
|
|
|`virtctl image-upload dv <datavolume_name> --datasource --size=<datavolume_size> --image-path=</path/to/image>`
|
|
|Upload a VM image to a new data volume and create an associated `DataSource` object for it.
|
|
|===
|
|
|