使用 KEDA 进行自动扩缩容¶
此功能仍处于实验阶段。
KEDA 代表 Kubernetes 事件驱动自动扩缩容(Kubernetes Event Driven Autoscaling)。 KEDA 是一个自定义控制器,允许用户创建与 Kubernetes Horizontal Pod Autoscaler 的自定义绑定。自动扩缩容器会根据处于 queued
(队列中)或 running
(运行中)状态的任务数量来调整活跃 Celery 工作进程的数量。
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.org.cn
helm install airflow apache-airflow/airflow \
--namespace airflow \
--set executor=CeleryExecutor \
--set workers.keda.enabled=true
将在 Airflow 命名空间中创建一个 ScaledObject
对象和一个 hpa
。
KEDA 将通过查询 Airflow 元数据数据库来确定所需的 Celery 工作进程数量。
SELECT
ceil(COUNT(*)::decimal / {{ .Values.config.celery.worker_concurrency }})
FROM task_instance
WHERE state='running' OR state='queued'
注意
通过 Helm 值 config.celery.worker_concurrency
来设置 Celery 工作进程并发数(即,不要通过 airflow.cfg 或环境变量设置),这样 KEDA 触发器才能与工作进程并发设置保持一致。