Предиктивный автоскейлинг - использование прогноза метрик для опережающего масштабирования#

Контекст#

В современных облачных и контейнеризированных системах, основанных на Kubernetes, возникает необходимость в опережающем масштабировании ресурсов для обеспечения высокой отзывчивости сервисов при предсказуемых пиковых нагрузках.

Компании сталкиваются с задачей предотвращения снижения качества обслуживания из-за задержек масштабирования, которые возникают при традиционных подходах, основанных на реактивном реагировании на текущие показатели метрик.

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

Проблема#

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

  • Реактивное масштабирование на основе текущих метрик приводит к задержкам и временному снижению качества обслуживания при резком увеличении нагрузки.

  • Отсутствие возможности опережающего масштабирования не позволяет эффективно управлять ресурсами при предсказуемых пиковых нагрузках.

  • Без предиктивного автоскейлинга невозможно заранее подготовить ресурсы для приложений с длительным временем запуска (например, приложения, написанные на Java), что приводит к простоям и ошибкам при обработке запросов.

  • Проблема прогрева приложения: при масштабировании новые экземпляры приложения требуют времени на инициализацию и в это время они не могут эффективно обрабатывать запросы.

  • Невозможность предиктивного автоскейлинга на основе прогноза будущих значений метрик.

Решение#

Для решения вышеуказанных проблем предлагается использовать паттерн предиктивного автоскейлинга на основе компонента PREM (Metrics Predictor) и AUSC (Autoscaler).

Необходимое решение:

  1. Использование сервиса компонента PREM, который прогнозирует будущие значения метрик на основе исторических данных и паттернов поведения.

  2. Интеграция прогнозируемых значений метрик в механизм масштабирования AUSC.

  3. Настройка триггера predictive в ScaledObject компонента AUSC для масштабирования на основе прогнозируемых метрик.

  4. Настройка спецификации PREM API.