Общие сведения о конфигурациях масштабировщика

Завершено

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 секунд перед тем, как снова увеличивать масштаб.