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
        строка