VirtualMachine
Scope: Namespaced
Version: v1alpha2
Describes the configuration and status of a virtual machine (VM). On a running VM, changed parameters can only be applied after rebooting, except for the following parameters that are applied on the fly:
.metadata.labels
.metadata.annotations
.spec.disruptions.restartApprovalMode
.spec.runPolicy
.
- spec
Required value
- spec.affinity
The same as in the pod parameter
spec.affinity
in Kubernetes;The
affinity
setting details are exactly matching the documentation source above. The only difference are the names of several parameters. The following alternative names are used:podAffinity
->virtualMachineAndPodAffinity
podAffinityTerm
->virtualMachineAndPodAffinityTerm
- spec.affinity.nodeAffinity
Describes node affinity scheduling rules for a VM.
- spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution
- spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference
Required value
- spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchExpressions
- spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchExpressions.key
Required value
- spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchExpressions.operator
Required value
- spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchExpressions.values
- Element of the array
- spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchFields
- spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchFields.key
Required value
- spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchFields.operator
Required value
- spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchFields.values
- Element of the array
- spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.weight
Required value
Allowed values:
1 <= X <= 100
- spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution
- spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms
Required value
- spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchExpressions
- spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchExpressions.key
Required value
- spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchExpressions.operator
Required value
- spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchExpressions.values
- Element of the array
- spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchFields
- spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchFields.key
Required value
- spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchFields.operator
Required value
- spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchFields.values
- Element of the array
- spec.affinity.virtualMachineAndPodAffinity
Describes pod and VM affinity scheduling rules.
- spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution
- spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm
Required value
- spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector
- spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchExpressions
- spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchExpressions.key
Required value
- spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchExpressions.operator
Required value
- spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchExpressions.values
- Element of the array
- spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchLabels
- spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.matchLabelKeys
- Element of the array
- spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.mismatchLabelKeys
- Element of the array
- spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector
- spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchExpressions
- spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchExpressions.key
Required value
- spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchExpressions.operator
Required value
- spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchExpressions.values
- Element of the array
- spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchLabels
- spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaces
- Element of the array
- spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.topologyKey
Required value
- spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.weight
Required value
Allowed values:
1 <= X <= 100
- spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution
- spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector
- spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions
- spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions.key
Required value
- spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions.operator
Required value
- spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions.values
- Element of the array
- spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchLabels
- spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.matchLabelKeys
- Element of the array
- spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.mismatchLabelKeys
- Element of the array
- spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector
- spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions
- spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions.key
Required value
- spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions.operator
Required value
- spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions.values
- Element of the array
- spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchLabels
- spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaces
- Element of the array
- spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.topologyKey
Required value
- spec.affinity.virtualMachineAndPodAntiAffinity
Describes pod and VM anti-affinity scheduling rules.
- spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution
- spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm
Required value
- spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector
- spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchExpressions
- spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchExpressions.key
Required value
- spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchExpressions.operator
Required value
- spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchExpressions.values
- Element of the array
- spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchLabels
- spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.matchLabelKeys
- Element of the array
- spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.mismatchLabelKeys
- Element of the array
- spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector
- spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchExpressions
- spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchExpressions.key
Required value
- spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchExpressions.operator
Required value
- spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchExpressions.values
- Element of the array
- spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchLabels
- spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaces
- Element of the array
- spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.topologyKey
Required value
- spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.weight
Required value
Allowed values:
1 <= X <= 100
- spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution
- spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector
- spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions
- spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions.key
Required value
- spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions.operator
Required value
- spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions.values
- Element of the array
- spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchLabels
- spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.matchLabelKeys
- Element of the array
- spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.mismatchLabelKeys
- Element of the array
- spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector
- spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions
- spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions.key
Required value
- spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions.operator
Required value
- spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions.values
- Element of the array
- spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchLabels
- spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaces
- Element of the array
- spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.topologyKey
Required value
- spec.blockDeviceRefs
Required value
List of block devices connected to the VM.
Link to a block device.
- spec.blockDeviceRefs.kind
Supported block device types:
ClusterVirtualImage
: Use ClusterVirtualImage as the disk. This type is always mounted inReadOnly
mode. An ISO image will be mounted as a CD-ROM device.VirtualImage
: Use VirtualImage as the disk. This type is always mounted inReadOnly
mode. An ISO image will be mounted as a CD-ROM device.VirtualDisk
: Use VirtualDisk as the disk. This type is always mounted inReadWrite
mode.
Allowed values:
ClusterVirtualImage
,VirtualImage
,VirtualDisk
- spec.blockDeviceRefs.name
Name of the attached resource.
- spec.bootloader
Defines a bootloader for a VM.
BIOS
: Use BIOS.EFI
: Use Unified Extensible Firmware (EFI/UEFI).EFIWithSecureBoot
: Use UEFI/EFI with the Secure Boot support.
Default:
"BIOS"
Allowed values:
BIOS
,EFI
,EFIWithSecureBoot
- spec.cpu
Required value
Section describing the CPU settings for a VM.
- spec.cpu.coreFraction
Guaranteed share of CPU time that will be allocated to the VM. Specified as a percentage.
Default:
"100%"
- spec.cpu.cores
Required value
Number of cores.
Allowed values:
1 <= X
- spec.disruptions
Describes the policy for applying changes that require rebooting the VM.
Changes to some VM configuration settings require a VM reboot to be applied. This policy lets you specify the behavior defining how the VM reacts to such changes.
Default:
{"restartApprovalMode":"Manual"}
- spec.disruptions.restartApprovalMode
Approval mode for changes that require rebooting the VM:
Manual
: Changes won’t be applied until the user manually reboots the VM.Automatic
: The VM will be rebooted immediately after the parameters requiring the reboot are saved.
Allowed values:
Manual
,Automatic
- spec.enableParavirtualization
Use the
virtio
bus for connecting virtual devices of a VM. To disablevirtio
for a VM, set this parameter toFalse
.Note: To use the paravirtualization mode, some operating systems require installing the corresponding drivers.
Default:
true
- spec.memory
Required value
Section specifying the RAM settings for the VM.
- spec.memory.size
Required value
RAM amount.
Pattern:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
- spec.osType
Lets you select the type of a used OS that will be used to create a VM with an optimal set of required virtual devices and parameters.
Windows
: For an operating system from the Microsoft Windows family.Generic
: For other operating systems.
Default:
"Generic"
Allowed values:
Windows
,Generic
- spec.provisioning
Section describing a VM initial provisioning scenario.
- spec.provisioning.sysprepRef
Link to an existing resource with the Windows automation scenario.
A resource structure for the
SysprepRef
type:.data.autounattend.xml
.data.unattend.xml
- spec.provisioning.sysprepRef.kind
Required value
Kind of the resource. Use a secret of the following type:
provisioning.virtualization.deckhouse.io/sysprep
.Default:
"Secret"
Allowed values:
Secret
- spec.provisioning.sysprepRef.name
Required value
Secret name.
- spec.provisioning.type
Supported parameters for using the provisioning scenario:
UserData
: Use thecloud-init
scenario in the.spec.provisioning.UserData
section.UserDataRef
: Use thecloud-init
scenario located in a different resource.SysprepRef
: Use the automatic Windows installation scenario located in a different resource.
Allowed values:
UserData
,UserDataRef
,SysprepRef
- spec.provisioning.userData
cloud-init
scenario content.More information about
cloud-init
and configuration examples. - spec.provisioning.userDataRef
Link to an existing resource with the
cloud-init
scenario.A resource structure for the
userDataRef
type:.data.userData
.
- spec.provisioning.userDataRef.kind
Required value
Kind of the resource.
Default:
"Secret"
Allowed values:
Secret
- spec.provisioning.userDataRef.name
Required value
Name of the resource with the
cloud-init
scenario.
- spec.runPolicy
Defines the VM startup policy:
AlwaysOn
: Once created, the VM is always in a running state, even if shut down by the OS.AlwaysOff
: Once created, the VM is always in a powered-off state.Manual
: Once created, the VM is switched off. Switching on and off is controlled via API services or the OS.AlwaysOnUnlessStoppedManually
: Once created, the VM is always in a running state. It can be switched off by the OS or using the following command for the d8 utility:d8 v stop <vm_name>
.
Default:
"AlwaysOnUnlessStoppedManually"
Allowed values:
AlwaysOn
,AlwaysOff
,Manual
,AlwaysOnUnlessStoppedManually
- spec.terminationGracePeriodSeconds
Grace period after sending a
SIGTERM
signal to shut down a VM. Once the grace period expires, the VM is forcibly terminated.Default:
60
- spec.tolerations.effect
- spec.tolerations.key
- spec.tolerations.operator
- spec.tolerations.tolerationSeconds
- spec.tolerations.value
- spec.topologySpreadConstraints
The same as in the pod parameter
spec.topologySpreadConstraints
in Kubernetes.- spec.topologySpreadConstraints.labelSelector
- spec.topologySpreadConstraints.labelSelector.matchExpressions
- spec.topologySpreadConstraints.labelSelector.matchExpressions.key
Required value
- spec.topologySpreadConstraints.labelSelector.matchExpressions.operator
Required value
- spec.topologySpreadConstraints.labelSelector.matchExpressions.values
- Element of the array
- spec.topologySpreadConstraints.labelSelector.matchLabels
- spec.topologySpreadConstraints.maxSkew
Required value
- spec.topologySpreadConstraints.topologyKey
Required value
- spec.topologySpreadConstraints.whenUnsatisfiable
Required value
- spec.virtualMachineClassName
Required value
Name of the VirtualMachineClass resource describing the requirements for a virtual CPU, memory, and the resource allocation policy.
- spec.virtualMachineIPAddressName
Name for the associated virtualMachineIPAddress resource.
Specified when it is necessary to use a previously created IP address of a VM.
If not explicitly specified, by default a virtualMachineIPAddress resource is created with a name similar to the VM resource (
.metadata.name
).