KEDA Overview
Содержание
Введение
KEDA — это основанный на Kubernetes автоскейлер с событийным управлением. Home Page. С помощью KEDA вы можете масштабировать любой контейнер в Kubernetes в зависимости от количества событий, которые необходимо обработать.
KEDA — это специализированный и легковесный компонент, который можно добавить в любой кластер Kubernetes. KEDA работает вместе со стандартными компонентами Kubernetes, такими как Horizontal Pod Autoscaler, и может расширять функциональность без перезаписи или дублирования. С KEDA вы можете явно указать приложения, для которых хотите использовать масштабирование на основе событий, при этом другие приложения продолжают работать. Это делает KEDA гибким и безопасным решением для работы вместе с любым количеством других приложений или фреймворков Kubernetes.
Подробности смотрите в официальной документации: Keda Documentation
Преимущества
Основные преимущества KEDA:
- Простое автоскейлирование: Обеспечьте расширенные возможности масштабирования для любой нагрузки в вашем кластере Kubernetes.
- Событийное управление: Интеллектуальное масштабирование ваших событийно-ориентированных приложений.
- Встроенные скейлеры: Каталог из более чем 70 встроенных скейлеров для различных облачных платформ, баз данных, систем обмена сообщениями, телеметрии, CI/CD и других.
- Поддержка различных типов нагрузок: Поддержка различных типов нагрузок, таких как deployments, jobs и пользовательские ресурсы с подресурсом /scale.
- Снижение воздействия на окружающую среду: Создавайте устойчивые платформы, оптимизируя планирование нагрузки и масштабирование до нуля.
- Расширяемость: Используйте собственные или поддерживаемые сообществом скейлеры.
- Независимость от поставщика: Поддержка триггеров для различных облачных провайдеров и продуктов.
- Поддержка Azure Functions: Запускайте и масштабируйте ваши Azure Functions на Kubernetes в производственных нагрузках.
Как работает KEDA
KEDA отслеживает внешние источники событий и регулирует ресурсы вашего приложения в зависимости от спроса. Его основные компоненты работают вместе, чтобы это обеспечить:
- KEDA Operator следит за источниками событий и изменяет количество экземпляров приложения вверх или вниз в зависимости от спроса.
- Metrics Server предоставляет внешние метрики для HPA Kubernetes, чтобы он мог принимать решения о масштабировании.
- Scalers подключаются к источникам событий, таким как очереди сообщений или базы данных, получая данные о текущей нагрузке или использовании.
- Custom Resource Definitions (CRDs) определяют, как ваши приложения должны масштабироваться на основе триггеров, таких как длина очереди или скорость запросов API.
Проще говоря, KEDA слушает, что происходит вне Kubernetes, получает необходимые данные и масштабирует ваши приложения соответственно. Это эффективно и хорошо интегрируется с Kubernetes для динамического управления масштабированием.
KEDA Custom Resource Definitions (CRDs)
KEDA использует Custom Resource Definitions (CRDs) для управления поведением масштабирования:
- ScaledObject: Связывает ваше приложение (например, Deployment или StatefulSet) с внешним источником событий, определяя правила масштабирования.
- ScaledJob: Обрабатывает задачи пакетной обработки, масштабируя Jobs на основе внешних метрик.
- TriggerAuthentication: Обеспечивает безопасный доступ к источникам событий, поддерживая методы, такие как переменные окружения или облачные учетные данные.
Эти CRD дают вам контроль над масштабированием, сохраняя безопасность и отзывчивость приложений к изменению спроса.
Пример ScaledObject:
Следующий пример нацелен на использование CPU всего пода. Если в поде несколько контейнеров, будет учитываться сумма всех контейнеров.
kind: ScaledObject
metadata:
name: cpu-scaledobject
namespace: <your-namespace>
spec:
scaleTargetRef:
name: <your-deployment>
triggers:
- type: cpu
metricType: Utilization # Allowed types are 'Utilization' or 'AverageValue'
metadata:
value: "50"