VirtualMachineClass
Scope: Cluster
Version: v1alpha2
Данный ресурс описывает:
- требования к виртуальному CPU
- требования размещения ВМ на узлах
- политику определения размера ресурсов ВМ.
Этот ресурс не может быть удален, пока он используется в одной из ВМ.
- apiVersion
APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
- kind
Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
- metadata
- spec
Обязательный параметр
- spec.cpu
Обязательный параметр
Блок описания требований к виртуальному CPU.
- spec.cpu.discovery
Создать универсальную модель виртуального CPU на основе наборов инструкций, которые поддерживаются на всех физических CPU узлов выборки.
Допустим, у нас есть выборка из трех узлов, где на каждом узле есть физические CPU с различными наборами инструкций. Набор инструкций физического CPU узла 1: [f1, f2, f3, f4], для узла 2: [f1, f2], и для узла 3: [f1, f2, f3]. Для создания универсальной модели CPU для этой выборки узлов, необходимо объединить общие инструкции, присущие всем узлам, то есть [f1, f2]. В результате мы получим виртуальный CPU с набором инструкций [f1, f2]
- spec.cpu.discovery.nodeSelector
Выборка узлов, на основе которой будет создана универсальная модель CPU.
- spec.cpu.discovery.nodeSelector.matchExpressions
Список селекторов лейблов. Требования селекторов объединяются. Т.е. должны выполнятся все условия списка. Под лейблом понимается пара:
ключ = значение
.Описание селекторов лейблов.
- spec.cpu.discovery.nodeSelector.matchExpressions.key
Обязательный параметр
Название ключа лейбла, к которому применятся селектор.
- spec.cpu.discovery.nodeSelector.matchExpressions.operator
Обязательный параметр
Оператор определяет отношение ключа лейбла к набору его значений. Допустимые операторы:
In
,NotIn
,Exists
иDoesNotExist
:In
- значение ключа лейбла входит в заданный список лейбловvalues
.NotIn
- значение ключа лейбла не входит в заданный список лейбловvalues
.Exist
- ключ лейбла существует.DoesNotExist
- ключа лейбла не существует. - spec.cpu.discovery.nodeSelector.matchExpressions.values
Строковый список значений. Если оператор
In
илиNotIn
, список значений должен быть непустым. Если операторExists
илиDoesNotExist
, список значений должен быть пустым.
- spec.cpu.discovery.nodeSelector.matchLabels
Карта пар
ключ=значение
. Одинключ=значение
для matchLabels эквивалентен элементу matchExpressions, ключевым полем которого является «ключ», оператором - «In», а список значений содержит только «значение».Для выборки по данному критерию все значения логически суммируются.
- spec.cpu.features
Необходимые инструкции для процессора в виде списка Дополнительную информацию о поддерживаемых инструкциях можно найти здесь
Пример:
features: - mmx - vmx - sse2
- spec.cpu.model
Название модели процессора. Дополнительная информация о моделях здесь
Пример:
model: IvyBridge
- spec.cpu.type
Обязательный параметр
В качестве типа ресурса, поддерживаются следующие варианты:
Host
- используется виртуальный CPU, максимально близкий к CPU узла платформы по набору инструкций. Это обеспечивает высокую производительность и функциональность, а также совместимость с живой миграцией для узлов с похожими типами процессоров. Например, миграция ВМ между узлами с процессорами Intel и AMD не будет работать. Это также справедливо для процессоров разных поколений, так как набор инструкций у них отличается.HostPassthrough
- используется физический CPU узла платформы напрямую без каких-либо изменений. При использовании данного класса гостевая ВМ может быть перенесена только на целевой узел, у которого CPU точно соответствует CPU исходного узла.Discovery
- создание виртуального CPU на основе наборов инструкций физических CPU для заданного набора узлов.Model
- модель процессора. Модель процессора - это именованный и предварительно определенный набор поддерживаемых инструкций процессора.Features
- необходимый набор поддерживаемых инструкций для процессора.
Допустимые значения:
Host
,HostPassthrough
,Discovery
,Model
,Features
- spec.nodeSelector
Селектор узлов, на которые разрешено планировать ВМ для запуска.
- spec.nodeSelector.matchExpressions
Список селекторов лейблов. Требования селекторов объединяются. Т.е. должны выполнятся все условия списка. Под лейблом понимается пара:
ключ = значение
.Описание селекторов лейблов.
- spec.nodeSelector.matchExpressions.key
Обязательный параметр
Название ключа лейбла, к которому применятся селектор.
- spec.nodeSelector.matchExpressions.operator
Обязательный параметр
Оператор определяет отношение ключа лейбла к набору его значений. Допустимые операторы:
In
,NotIn
,Exists
иDoesNotExist
:In
- значение ключа лейбла входит в заданный список лейбловvalues
.NotIn
- значение ключа лейбла не входит в заданный список лейбловvalues
.Exist
- ключ лейбла существует.DoesNotExist
- ключа лейблане существует. - spec.nodeSelector.matchExpressions.values
Строковый список значений. Если оператор
In
илиNotIn
, список значений должен быть непустым. Если операторExists
илиDoesNotExist
, список значений должен быть пустым.
- spec.nodeSelector.matchLabels
Карта пар
ключ=значение
. Одинключ=значение
для matchLabels эквивалентен элементу matchExpressions, ключевым полем которого является «ключ», оператором - «In», а список значений содержит только «значение».Для выборки по данному критерию все значения логически суммируются.
- spec.sizingPolicies
- spec.sizingPolicies.coreFractions
Допустимые значения параметра
coreFraction
.- Элемент массива
Допустимые значения:
1 <= X <= 100
- spec.sizingPolicies.cores
Политика применяется для заданного диапазона числа ядер CPU.
- spec.sizingPolicies.cores.max
Обязательный параметр
Максимальное число ядер CPU.
Допустимые значения:
X <= 1024
Пример:
max: 10
- spec.sizingPolicies.cores.min
Обязательный параметр
Минимальное число ядер CPU.
Допустимые значения:
1 <= X
Пример:
min: 1
- spec.sizingPolicies.cores.step
Шаг увеличения числа ядер CPU.
Допустимые значения:
1 <= X
Пример:
step: 1
- spec.sizingPolicies.dedicatedCores
Допустимые значения параметра
dedicatedCores
. - spec.sizingPolicies.memory
Политика определения размера памяти.
- spec.sizingPolicies.memory.max
Максимальный объем памяти.
Шаблон:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
Пример:
max: 8Gi
- spec.sizingPolicies.memory.min
Минимальный объем памяти.
Шаблон:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
Пример:
min: 1Gi
- spec.sizingPolicies.memory.perCore
Объем памяти на одно ядро процессора.
- spec.sizingPolicies.memory.perCore.max
Максимальный объем памяти.
Шаблон:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
Пример:
max: 8Gi
- spec.sizingPolicies.memory.perCore.min
Минимальный объем памяти.
Шаблон:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
Пример:
min: 1Gi
- spec.sizingPolicies.memory.step
Шаг увеличения объема памяти.
Шаблон:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
Пример:
step: 512Mi
- spec.tolerations
Параметр аналогичен параметру
spec.tolerations
у Pod. Tolerations из этого параметра будут объединены с tolerations, указанными в ресурсе VirtualMachine. При этом tolerations у VirtualMachine имеют больший приоритет.- spec.tolerations.effect
- spec.tolerations.key
- spec.tolerations.operator
- spec.tolerations.tolerationSeconds
- spec.tolerations.value