VirtualMachine
Scope: Namespaced
Version: v1alpha2
Ресурс, описывающий конфигурацию и статус виртуальной машины (ВМ). Для запущенной ВМ изменение параметров может быть применено только после перезагрузки ВМ, за исключением следующих параметров (они применяются на лету):
.metadata.labels
.metadata.annotations
.spec.disruptions.restartApprovalMode
.spec.disruptions.runPolicy
- spec
Обязательный параметр
- spec.affinity
По аналогии, как и в параметре pods
spec.affinity
в Kubernetes.Настройка Affinity полностью аналогична приведенной выше документации, разница лишь в названиях некоторых параметров. Фактически, используются следующие аналоги:
- podAffinity -> virtualMachineAndPodAffinity;
- podAffinityTerm -> virtualMachineAndPodAffinityTerm.
- spec.affinity.nodeAffinity
Описывает правила affiniy узлов для ВМ.
- spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution
- spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference
Обязательный параметр
- spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchExpressions
- spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchExpressions.key
Обязательный параметр
- spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchExpressions.operator
Обязательный параметр
- spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchExpressions.values
- Элемент массива
- spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchFields
- spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchFields.key
Обязательный параметр
- spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchFields.operator
Обязательный параметр
- spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchFields.values
- Элемент массива
- spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.weight
Обязательный параметр
Допустимые значения:
1 <= X <= 100
- spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution
- spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms
Обязательный параметр
- spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchExpressions
- spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchExpressions.key
Обязательный параметр
- spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchExpressions.operator
Обязательный параметр
- spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchExpressions.values
- Элемент массива
- spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchFields
- spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchFields.key
Обязательный параметр
- spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchFields.operator
Обязательный параметр
- spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchFields.values
- Элемент массива
- spec.affinity.virtualMachineAndPodAffinity
Описывает правила affiniy подов и ВМ.
- spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution
- spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm
Обязательный параметр
- spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector
- spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchExpressions
- spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchExpressions.key
Обязательный параметр
- spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchExpressions.operator
Обязательный параметр
- spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchExpressions.values
- Элемент массива
- spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchLabels
- spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.matchLabelKeys
- Элемент массива
- spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.mismatchLabelKeys
- Элемент массива
- spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector
- spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchExpressions
- spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchExpressions.key
Обязательный параметр
- spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchExpressions.operator
Обязательный параметр
- spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchExpressions.values
- Элемент массива
- spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchLabels
- spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaces
- Элемент массива
- spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.topologyKey
Обязательный параметр
- spec.affinity.virtualMachineAndPodAffinity.preferredDuringSchedulingIgnoredDuringExecution.weight
Обязательный параметр
Допустимые значения:
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
Обязательный параметр
- spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions.operator
Обязательный параметр
- spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions.values
- Элемент массива
- spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchLabels
- spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.matchLabelKeys
- Элемент массива
- spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.mismatchLabelKeys
- Элемент массива
- spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector
- spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions
- spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions.key
Обязательный параметр
- spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions.operator
Обязательный параметр
- spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions.values
- Элемент массива
- spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchLabels
- spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaces
- Элемент массива
- spec.affinity.virtualMachineAndPodAffinity.requiredDuringSchedulingIgnoredDuringExecution.topologyKey
Обязательный параметр
- spec.affinity.virtualMachineAndPodAntiAffinity
Описывает правила anti-affiniy пода и ВМ.
- spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution
- spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm
Обязательный параметр
- spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector
- spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchExpressions
- spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchExpressions.key
Обязательный параметр
- spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchExpressions.operator
Обязательный параметр
- spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchExpressions.values
- Элемент массива
- spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.labelSelector.matchLabels
- spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.matchLabelKeys
- Элемент массива
- spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.mismatchLabelKeys
- Элемент массива
- spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector
- spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchExpressions
- spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchExpressions.key
Обязательный параметр
- spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchExpressions.operator
Обязательный параметр
- spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchExpressions.values
- Элемент массива
- spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaceSelector.matchLabels
- spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.namespaces
- Элемент массива
- spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.virtualMachineAndPodAffinityTerm.topologyKey
Обязательный параметр
- spec.affinity.virtualMachineAndPodAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.weight
Обязательный параметр
Допустимые значения:
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
Обязательный параметр
- spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions.operator
Обязательный параметр
- spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions.values
- Элемент массива
- spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchLabels
- spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.matchLabelKeys
- Элемент массива
- spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.mismatchLabelKeys
- Элемент массива
- spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector
- spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions
- spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions.key
Обязательный параметр
- spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions.operator
Обязательный параметр
- spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions.values
- Элемент массива
- spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchLabels
- spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaces
- Элемент массива
- spec.affinity.virtualMachineAndPodAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.topologyKey
Обязательный параметр
- spec.blockDeviceRefs
Обязательный параметр
Список блочных устройств, которые могут быть смонтированы в ВМ.
Порядок загрузки определяется порядком в списке.
The reference to block device.
- spec.blockDeviceRefs.kind
Поддерживаемые типы:
ClusterVirtualImage
— использоватьClusterVirtualImage
в качестве диска. Этот тип всегда монтируется в режиме для чтения (ReadOnly). Если образ является ISO-образом, он будет смонтирован как устройство CDROM.VirtualImage
— использоватьVirtualImage
в качестве диска. Этот тип всегда монтируется в режиме для чтения (ReadOnly). Если образ является ISO-образом, он будет смонтирован как устройство CDROM.VirtualDisk
— используйтеVirtualDisk
в качестве диска. Этот тип всегда монтируется в режиме для чтения и записи (ReadWrite).
Допустимые значения:
ClusterVirtualImage
,VirtualImage
,VirtualDisk
- spec.blockDeviceRefs.name
Имя ресурса заданного типа.
- spec.bootloader
Загрузчик для VM:
- BIOS — использовать BIOS.
- EFI — использовать Unified Extensible Firmware (EFI/UEFI).
- EFIWithSecureBoot — использовать UEFI/EFI с поддержкой SecureBoot.
По умолчанию:
"BIOS"
Допустимые значения:
BIOS
,EFI
,EFIWithSecureBoot
- spec.cpu
Обязательный параметр
Блок определяет настройки ЦП для виртуальной машины.
- spec.cpu.coreFraction
Гарантированная доля времени ЦП, которая будет выделена ВМ. Указывается в процентах.
По умолчанию:
"100%"
- spec.cpu.cores
Обязательный параметр
Количество ядер.
Допустимые значения:
1 <= X
- spec.disruptions
Описании политики применения изменений, требующих перезагрузки ВМ.
Изменение некоторых параметров конфигурации ВМ требуют перезагрузки ВМ для их применения. Данная политика позволяет задать поведения, как ВМ будет реагировать на такие изменения.
По умолчанию:
{"restartApprovalMode":"Manual"}
- spec.disruptions.restartApprovalMode
Режим одобрения для изменений, требующих перезагрузки ВМ:
Manual
— изменения не будут применены, до тех пока пользователь самостоятельно не осуществит перезагрузку ВМ.Автоматический
— ВМ будет перезагружена, сразу, после сохранения параметров, требующих перезагрузки ВМ.
Допустимые значения:
Manual
,Automatic
- spec.enableParavirtualization
Использовать шину
virtio
для подключения виртуальных устройств ВМ. Установите значение false, чтобы отключитьvirtio
для этой ВМ.Внимание: Для использования режима паравиртуализации некоторые ОС требуют установки соответствующих драйверов.
По умолчанию:
true
- spec.memory
Обязательный параметр
Блок определяет настройки оперативной памяти для виртуальной машины.
- spec.memory.size
Обязательный параметр
Объем оперативной памяти.
Шаблон:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
- spec.osType
Параметр позволяет выбрать тип используемой ОС, для которой будет создана ВМ с оптимальным набором необходимых виртуальных устройств и параметров.
- Windows — для ОС семейства Microsoft Windows.
- Generic — для других типов ОС.
По умолчанию:
"Generic"
Допустимые значения:
Windows
,Generic
- spec.priorityClassName
По аналогии, как и в параметре pods
spec.priorityClassName
в Kubernetes. - spec.provisioning
Блок описания сценария начальной инициализации ВМ.
- spec.provisioning.sysprepRef
Ссылка на существующий ресурс со сценарием автоматизации Windows.
Структура ресурса для типа SysprepRef:
.data.autounattend.xml
.data.unattend.xml
- spec.provisioning.sysprepRef.kind
Обязательный параметр
Тип ресурса. Необходимо использовать секрет с типом - “provisioning.virtualization.deckhouse.io/sysprep”.
По умолчанию:
"Secret"
Допустимые значения:
Secret
- spec.provisioning.sysprepRef.name
Обязательный параметр
Имя ресурса со сценарием автоматизации.
- spec.provisioning.type
Поддерживаемые параметры для использования сценария инициализации:
- UserData — использовать сценарий cloud-init в секции .spec.provisioning.UserData.
- UserDataRef — использовать сценарий cloud-init, который находится в другом ресурсе.
- SysprepRef — использовать сценарий автоматизации установки Windows, который находится в другом ресурсе.
Допустимые значения:
UserData
,UserDataRef
,SysprepRef
- spec.provisioning.userData
Текст сценария cloud-init.
Дополнительная информация: https://cloudinit.readthedocs.io/en/latest/reference/examples.html
- spec.provisioning.userDataRef
Ссылка на существующий ресурс со сценарием cloud-init.
Структура ресурса для типа userDataRef:
.data.userData
- spec.provisioning.userDataRef.kind
Обязательный параметр
Тип ресурса. Необходимо использовать секрет с типом - “provisioning.virtualization.deckhouse.io/cloud-init”.
По умолчанию:
"Secret"
Допустимые значения:
Secret
- spec.provisioning.userDataRef.name
Обязательный параметр
Имя ресурса со сценарием cloud-init.
- spec.runPolicy
Этот параметр определяет политику запуска ВМ:
AlwaysOn
— после создания ВМ всегда находится в работающем состоянии, даже в случае ее выключения средствами ОС.AlwaysOff
— после создания ВМ всегда находится в выключенном состоянии.Manual
— после создания ВМ выключается, состояние ВМ (включение/выключение) контролируется через API-сервисы или средствами ОС.AlwaysOnUnlessStoppedManually
— после создания ВМ всегда находится в работающем состоянии. ВМ можно выключить средствами ОС или воспользоваться утилитой d8:d8 v stop <vm_name>
.
По умолчанию:
"AlwaysOnUnlessStoppedManually"
Допустимые значения:
AlwaysOn
,AlwaysOff
,Manual
,AlwaysOnUnlessStoppedManually
- spec.terminationGracePeriodSeconds
Период ожидания после подачи сигнала (SIGTERM) о прекращении работы ВМ, по истечении которого ВМ принудительно завершается.
По умолчанию:
60
- spec.tolerations.effect
- spec.tolerations.key
- spec.tolerations.operator
- spec.tolerations.tolerationSeconds
- spec.tolerations.value
- spec.topologySpreadConstraints
По аналогии, как и в параметре pods
spec.topologySpreadConstraints
в Kubernetes.- spec.topologySpreadConstraints.labelSelector
- spec.topologySpreadConstraints.labelSelector.matchExpressions
- spec.topologySpreadConstraints.labelSelector.matchExpressions.key
Обязательный параметр
- spec.topologySpreadConstraints.labelSelector.matchExpressions.operator
Обязательный параметр
- spec.topologySpreadConstraints.labelSelector.matchExpressions.values
- Элемент массива
- spec.topologySpreadConstraints.labelSelector.matchLabels
- spec.topologySpreadConstraints.maxSkew
Обязательный параметр
- spec.topologySpreadConstraints.topologyKey
Обязательный параметр
- spec.topologySpreadConstraints.whenUnsatisfiable
Обязательный параметр
- spec.virtualMachineClassName
Обязательный параметр
Имя ресурса
VirtualMachineClass
, который описывает требования к виртуальному CPU, памяти и политику размещения ресурсов. - spec.virtualMachineIPAddressName
Имя для связанного ресурса
virtualMachineIPAddress
.Указывается при необходимости использования ранее созданного IP-адреса ВМ.
Если не указано явно, по умолчанию для ВМ создается ресурс
virtualMachineIPAddress
с именем аналогичным ресурсу ВМ (.metadata.name
).