KEDA Overview
目录
介绍
KEDA 是一个基于 Kubernetes 的事件驱动自动扩缩器。主页。通过 KEDA,您可以根据需要处理的事件数量驱动 Kubernetes 中任何容器的扩缩。
KEDA 是一个单一用途且轻量级的组件,可以添加到任何 Kubernetes 集群中。KEDA 与标准的 Kubernetes 组件(如 Horizontal Pod Autoscaler)协同工作,能够扩展功能而不覆盖或重复。使用 KEDA,您可以明确映射希望使用事件驱动扩缩的应用,其他应用则继续正常运行。这使得 KEDA 成为一个灵活且安全的选项,可以与任意数量的其他 Kubernetes 应用或框架并行运行。
更多详情请参阅官方文档:Keda Documentation
优势
KEDA 的核心优势:
- 自动扩缩简单化: 为 Kubernetes 集群中的每个工作负载带来丰富的扩缩能力。
- 事件驱动: 智能地扩缩您的事件驱动应用。
- 内置 Scalers: 提供 70 多种内置 scaler,支持各种云平台、数据库、消息系统、遥测系统、CI/CD 等。
- 多种工作负载类型支持: 支持多种工作负载类型,如 deployments、jobs 及带有 /scale 子资源的自定义资源。
- 减少环境影响: 通过优化工作负载调度和零扩缩构建可持续平台。
- 可扩展: 支持自定义或使用 Community 维护的 scalers。
- 供应商无关: 支持多种云提供商和产品的触发器。
- 支持 Azure Functions: 在生产工作负载中运行并扩缩 Kubernetes 上的 Azure Functions。
KEDA 的工作原理
KEDA 监控外部事件源,并根据需求调整应用资源。其主要组件协同工作以实现这一目标:
- KEDA Operator 跟踪事件源,根据需求上下调整应用实例数量。
- Metrics Server 向 Kubernetes 的 HPA 提供外部指标,以便做出扩缩决策。
- 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:提供安全访问事件源的方法,支持环境变量或云特定凭据等方式。
这些 CRDs 让您能够控制扩缩,同时保持应用的安全性和对需求的响应能力。
ScaledObject 示例:
以下示例针对整个 Pod 的 CPU 利用率进行扩缩。如果 Pod 中有多个容器,则计算所有容器的总和。
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"