Lifecycle
Every VirtualMachineInstance
represents a single virtual machine instance. In general, the management of VirtualMachineInstances is kept similar to how Pods
are managed: Every VM that is defined in the cluster is expected to be running, just like Pods. Deleting a VirtualMachineInstance is equivalent to shutting it down, this is also equivalent to how Pods behave.
Launching a virtual machine
In order to start a VirtualMachineInstance, you just need to create a VirtualMachineInstance
object using kubectl
:
$ kubectl create -f vmi.yaml
Listing virtual machines
VirtualMachineInstances can be listed by querying for VirtualMachineInstance objects:
$ kubectl get vmis
Retrieving a virtual machine definition
A single VirtualMachineInstance definition can be retrieved by getting the specific VirtualMachineInstance object:
$ kubectl get vmis testvmi
Stopping a virtual machine
To stop the VirtualMachineInstance, you just need to delete the corresponding VirtualMachineInstance
object using kubectl
.
$ kubectl delete -f vmi.yaml
# OR
$ kubectl delete vmis testvmi
Note: Stopping a VirtualMachineInstance implies that it will be deleted from the cluster. You will not be able to start this VirtualMachineInstance object again.
Pausing and unpausing a virtual machine
Note: Pausing in this context refers to libvirt’s
virDomainSuspend
command:
“The process is frozen without further access to CPU resources and I/O but the memory used by the domain at the hypervisor level will stay allocated”
To pause a virtual machine, you need the virtctl
command line tool. Its pause
command works on either VirtualMachine
s or VirtualMachinesInstance
s:
$ virtctl pause vm testvm
# OR
$ virtctl pause vmi testvm
Paused VMIs have a Paused
condition in their status:
$ kubectl get vmi testvm -o=jsonpath='{.status.conditions[?(@.type=="Paused")].message}'
VMI was paused by user
Unpausing works similar to pausing:
$ virtctl unpause vm testvm
# OR
$ virtctl unpause vmi testvm
Renaming a Virtual Machine
Note: Renaming a Virtual Machine is only possible when a Virtual Machine is stopped, or has a ‘Halted’ run strategy.
$ virtctl rename vm_name new_vm_name