Общие сведения о конфигурациях масштабировщика
v2
версии API HPA позволяет точно настроить некоторые аспекты его поведения с помощью нового ключа в ФАЙЛЕ YAML с именем spec.behavior
. Он принимает два других ключа: scaleDown
и scaleUp
, которые определяют поведение HPA при масштабировании вниз и при увеличении масштаба.
Для каждого из этих ключей разрешены следующие значения:
Ключ | Тип | Описание |
---|---|---|
stabilizationWindowSeconds | int | Период, в течение которого HPA ищет метрики для вычисления требуемого состояния. Значение по умолчанию для scaleDown составляет пять минут, и для scaleUp нет окна стабилизации. |
выбратьПолитику | струна | Выбранный тип используемой политики может быть Min , Max или Disabled . |
Политики | массив HPAScalingPolicy |
Массив возможных политик для применения. |
Объект HPAScalingPolicy
определяется как объект со следующими ключами:
Ключ | Тип | Описание |
---|---|---|
тип | струна | Тип политики может быть Percent или Pods . |
ценность | int | Значение политики. |
период в секундах | int | Время, необходимое для повторного применения этой политики. |
Политики масштабирования позволяют точно настроить процесс масштабирования. Например, можно полностью отключить операцию уменьшения масштаба, задав политику scaleDown
для Disabled
, как показано в следующем примере:
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: contoso-website
namespace: hpa-contoso
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: contoso-website
minReplicas: 1
maxReplicas: 10
behavior:
scaleDown:
selectPolicy: Disabled
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 20
- type: Resource
resource:
name: memory
target:
type: Utilization
averageUtilization: 50
Вы также можете задать количество реплик для масштабирования за раз, определив политику scaleUp
, как показано ниже.
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: contoso-website
namespace: hpa-contoso
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: contoso-website
minReplicas: 1
maxReplicas: 10
behavior:
scaleUp:
selectPolicy: Max
stabilizationWindowSeconds: 120
policies:
- type: Percent
value: 30
periodSeconds: 60
- type: Pods
value: 7
periodSeconds: 90
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 20
- type: Resource
resource:
name: memory
target:
type: Utilization
averageUtilization: 50
В этом манифесте вы инструктируете HPA анализировать метрики за последние 120 секунд, чтобы вычислить требуемое состояние и получить максимальное из этих значений. После этого вычисляется 30% существующих модулей pod, округляет это число и сравнивает его с фиксированным значением семи модулей pod. Поскольку для selectPolicy
задано значение Max
, выбирается большее из этих двух чисел и применяется соответствующая политика, затем ожидается periodSeconds
перед повторным применением любых политик.
Например, предположим, что веб-сайт работает с 18 pods, а затем испытывает всплеск активности, который длится около 120 секунд. Требуемое состояние вычисляется путем вычисления 30% текущих запущенных модулей pod, что составляет 5,4 (округляется до 6). Это значение сравнивается с количеством подов во второй политике, который равен 7. Так как для ключа selectPolicy
задано значение Max
, оно использует большее значение этих двух значений. Затем HPA масштабируется на 7 и ожидает 90 секунд, прежде чем масштабироваться снова. Если пик достигает 25 капсул, расчет выполняется снова. 30% из 25 капсул составляет 7,5 (округлено до 8), что больше 7. Теперь HPA создает восемь новых модулей и ожидает 60 секунд перед тем, как снова увеличивать масштаб.