我们决定在 Kubernetes 上运行 Airflow。我们希望以一种平衡的方式利用 Kubernetes 的力量。我们的 DAG 中有一些非常小的任务,例如创建目录。KubernetesExecutor 为每个任务启动一个 pod,这需要很长时间,因此对于许多短任务来说是多余的。
我的问题是,是否可以将 Airflow 配置为为整个 DAG 启动一个 Kubernetes pod,而不是为每个任务启动一个 pod?(最好不要芹菜)
我们决定在 Kubernetes 上运行 Airflow。我们希望以一种平衡的方式利用 Kubernetes 的力量。我们的 DAG 中有一些非常小的任务,例如创建目录。KubernetesExecutor 为每个任务启动一个 pod,这需要很长时间,因此对于许多短任务来说是多余的。
我的问题是,是否可以将 Airflow 配置为为整个 DAG 启动一个 Kubernetes pod,而不是为每个任务启动一个 pod?(最好不要芹菜)
https://airflow.apache.org/docs/apache-airflow/stable/executor/celery_kubernetes.html
CeleryKubernetes Executor 允许您使用 celery worker 的即时资源或为任务启动 pod。我尚未配置此设置,但它似乎与您的用例相匹配。
我认为每个 DAG 不可能使用一个 pod,因为KubernetesExecutor 旨在为每个任务请求一个 pod:
当 DAG 提交任务时,KubernetesExecutor 会从 Kubernetes API 请求一个工作 pod。然后,worker pod 运行任务、报告结果并终止。
也许将多个较小的任务合并为一个是一种方法。