使用 KEDA 进行自动扩缩容

此功能仍处于实验阶段。

KEDA 代表 Kubernetes 事件驱动自动扩缩容。 KEDA 是一个自定义控制器,允许用户创建与 Kubernetes 水平 Pod 自动扩缩器 的自定义绑定。 自动扩缩器将根据 queuedrunning 状态的任务数量调整活跃 Celery Worker 的数量。

helm repo add kedacore https://kedacore.github.io/charts

helm repo update

kubectl create namespace keda

helm install keda kedacore/keda \
    --namespace keda \
    --version "v2.0.0"

通过在 helm 命令或 values.yaml 中设置 workers.keda.enabled=true 来为 Airflow 实例启用此功能。

kubectl create namespace airflow
helm repo add apache-airflow https://airflow.apache.org
helm install airflow apache-airflow/airflow \
    --namespace airflow \
    --set executor=CeleryExecutor \
    --set workers.keda.enabled=true

将在 airflow 命名空间中创建一个 ScaledObject 和一个 hpa

KEDA 将通过查询 Airflow 元数据数据库来得出所需的 Celery Worker 数量

SELECT
    ceil(COUNT(*)::decimal / {{ .Values.config.celery.worker_concurrency }})
FROM task_instance
WHERE state='running' OR state='queued'

注意

通过 Helm 值 config.celery.worker_concurrency 设置 Celery Worker 并发性(即,而不是 airflow.cfg 或环境变量),以便 KEDA 触发器与 Worker 并发性设置保持一致。

此条目是否有帮助?