Настройка CronHPA

Для бессостоянных приложений с периодическими колебаниями бизнес-активности CronHPA (Cron Horizontal Pod Autoscaler) поддерживает регулирование количества подов на основе заданных вами временных политик, что позволяет оптимизировать использование ресурсов в соответствии с предсказуемыми бизнес-паттернами.

Содержание

Понимание Cron Horizontal Pod Autoscalers

Вы можете создать cron horizontal pod autoscaler, чтобы указать количество подов, которые должны работать в определённое время согласно расписанию, что позволяет подготовиться к предсказуемым пиковым нагрузкам или снизить использование ресурсов в часы низкой активности.

После создания cron horizontal pod autoscaler платформа начинает отслеживать расписание и автоматически регулирует количество подов в указанные моменты времени. Такое масштабирование по времени происходит независимо от метрик использования ресурсов, что делает его идеальным для приложений с известными паттернами использования.

CronHPA работает путём определения одного или нескольких правил расписания, каждое из которых указывает время (в формате crontab) и целевое количество реплик. Когда наступает запланированное время, CronHPA изменяет количество подов в соответствии с указанной целью, независимо от текущего использования ресурсов.

Как работает CronHPA?

Cron horizontal pod autoscaler (CronHPA) расширяет концепцию автоскейлинга подов, добавляя управление на основе времени. CronHPA позволяет определить конкретные моменты времени, когда количество подов должно изменяться, что помогает подготовиться к предсказуемым пиковым нагрузкам или снизить использование ресурсов в часы низкой активности.

CronHPA постоянно сравнивает текущее время с заданными расписаниями. Когда наступает запланированное время, контроллер регулирует количество подов, чтобы оно соответствовало целевому количеству реплик, указанному для этого расписания. Если несколько расписаний срабатывают одновременно, платформа применит правило с более высоким приоритетом (то есть определённое раньше в конфигурации).

Предварительные требования

Убедитесь, что компоненты мониторинга развернуты в текущем кластере и работают корректно. Вы можете проверить статус развертывания и состояние компонентов мониторинга, нажав в правом верхнем углу платформы expand > Platform Health Status..

Создание Cron Horizontal Pod Autoscaler

Использование CLI

Вы можете создать cron horizontal pod autoscaler с помощью командной строки, определив YAML-файл и используя команду kubectl create. В следующем примере показано плановое масштабирование для объекта Deployment:

  1. Создайте YAML-файл с именем cronhpa.yaml со следующим содержимым:

    apiVersion: tkestack.io/v1
    kind: CronHPA
    metadata:
      name: my-deployment-cronhpa
      namespace: default
    spec:
      scaleTargetRef:
        apiVersion: apps/v1
        kind: Deployment
        name: my-deployment
      crons:
        - schedule: '0 0 * * *'
          targetReplicas: 0
        - schedule: '0 8 * * 1-5'
          targetReplicas: 3
        - schedule: '0 18 * * 1-5'
          targetReplicas: 1
    1. Используйте API версии tkestack.io/v1.
    2. Имя ресурса CronHPA.
    3. Имя деплоймента для масштабирования.
    4. Укажите версию API объекта для масштабирования.
    5. Укажите тип объекта. Объект должен быть Deployment, ReplicaSet или StatefulSet.
    6. Целевой ресурс, к которому применяется CronHPA.
    7. Расписание в стандартном формате crontab (минута час день месяц день_недели).
    8. Целевое количество реплик для масштабирования при срабатывании расписания.

    Этот пример настраивает деплоймент следующим образом:

    • Масштабировать до 0 реплик в полночь каждый день
    • Масштабировать до 3 реплик в 8:00 утра по будням (понедельник-пятница)
    • Масштабировать до 1 реплики в 18:00 по будням
  2. Примените YAML-файл для создания CronHPA:

    kubectl create -f cronhpa.yaml

Использование веб-консоли

  1. Войдите в Container Platform.

  2. В левой навигационной панели выберите Workloads > Deployments.

  3. Нажмите на Имя деплоймента.

  4. Прокрутите вниз до раздела Elastic Scaling и нажмите справа Update.

  5. Выберите Scheduled Scaling и настройте правила масштабирования. Если тип выбран как Custom, необходимо указать выражение Crontab для условия срабатывания в формате минута час день месяц неделя. Для подробного ознакомления обратитесь к разделу Writing Crontab Expressions.

  6. Нажмите Update.

Объяснение правил расписания

  1. Указывает, что начиная с 01:00 каждого понедельника будет оставаться только 1 под.
  2. Указывает, что начиная с 02:00 каждого вторника будет оставаться только 2 пода.
  3. Указывает, что начиная с 02:00 каждого вторника будет оставаться только 3 пода.

Важные замечания:

  • Если несколько правил имеют одинаковое время срабатывания (примеры 2 и 3), платформа выполнит автоматическое масштабирование только по правилу с более высоким приоритетом (пример 2).
  • CronHPA работает независимо от HPA. Если оба настроены для одной и той же нагрузки, они могут конфликтовать. Тщательно продумайте стратегию масштабирования.
  • Расписание использует формат crontab (минута час день месяц неделя) и следует тем же правилам, что и Kubernetes CronJobs.
  • Время основывается на настройках часового пояса кластера.
  • Для нагрузок с критическими требованиями к доступности убедитесь, что запланированное масштабирование не приведёт к неожиданному снижению мощности в периоды высокой нагрузки.