Переподписка позволяет выдать виртуальным машинам (ВМ) узла больше виртуальных ядер, чем на нём есть физических. Это оправданно, потому что ВМ редко нагружают процессор одновременно и на полную мощность.
Степенью переподписки управляет параметр coreFraction виртуальной машины, а допустимые его значения вы задаёте в политике сайзинга класса. Параметр определяет долю мощности ядра, которая ВМ гарантирована. Например, при coreFraction: 20% ВМ всегда получит пятую часть ядра, а при наличии свободных ресурсов на узле сможет занять и всё ядро целиком.
Если в классе список coreFractions не задан или содержит несколько значений, степень переподписки выбирает владелец проекта, указывая coreFraction при создании ВМ.
Размещая ВМ на узле, Deckhouse Platform (DP) складывает гарантированные доли всех ВМ узла по формуле Σ(cores × coreFraction / 100). Если сумма превысит число физических ядер, на этом узле ВМ не запустится.
Ниже разобран узел с 4 физическими ядрами и 5 ВМ, у каждой по 2 ядра и coreFraction: 20%. Гарантированная нагрузка составит 5 × 2 × 0,2 = 2 ядра при 10 виртуальных ядрах на 4 физических, то есть переподписка 2,5 к 1. Все пять ВМ разместятся на узле, потому что 2 ядра меньше доступных 4.
Переподписка, заданная жёстко
Список из одного значения не оставляет владельцу проекта выбора, и степень переподписки для всех ВМ класса определяете вы:
apiVersion: virtualization.deckhouse.io/v1alpha2
kind: VirtualMachineClass
metadata:
name: oversubscribed
spec:
sizingPolicies:
- cores:
min: 1
max: 8
memory:
perCore:
min: 1Gi
max: 8Gi
coreFractions: [20] # Единственное разрешённое значение.
defaultCoreFraction: 20
Все ВМ этого класса получают по 20% ядра, что даёт переподписку 5 к 1.
Переподписка на выбор владельца проекта
Список из нескольких значений оставляет выбор за владельцем проекта:
apiVersion: virtualization.deckhouse.io/v1alpha2
kind: VirtualMachineClass
metadata:
name: standard
spec:
sizingPolicies:
- cores:
min: 1
max: 4
memory:
perCore:
min: 1Gi
max: 8Gi
coreFractions: [5, 10, 20, 50, 100]
defaultCoreFraction: 20
Владелец проекта выбирает coreFraction из списка, а если не выбрал, ВМ получает 20%.