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
у подов. Подробнее о taints и tolerations. Tolerations из этого параметра будут объединены с tolerations, указанными в ресурсе VirtualMachine. При этом, tolerations у VirtualMachine имеют больший приоритет.- spec.tolerations.effect
- spec.tolerations.key
- spec.tolerations.operator
- spec.tolerations.tolerationSeconds
- spec.tolerations.value