Kubernetes 与 Apache Airflow 的集成

Integration of Kubernetes with Apache Airflow

我们正在构建工作流调度应用程序。我们发现 Airflow 是工作流管理器的不错选择,而 Kubernetes 是集群管理器的不错选择。因此,流量将是

  1. 我们将向 Airflow 提交工作流 DAG。
  2. Airflow 应通过指定 docker 图像将给定 DAG 的任务提交给 Kubernetes。
  3. Kubernetes 应该通过 运行 docker 容器在集群的可用 EC2 工作节点上执行任务。

通过搜索,我们发现Airflow有与ECS、Mesos集成的Operator,但没有与Kubernetes集成的Operator。然而,我们在 Airflow wiki 上发现了对 Kubernetes Operator 的请求,但没有任何进一步的更新。

那么,问题简单的说就是,Airflow如何与Kubernetes集成?

这正在飞行中。你可以跟随 this major jira ticket

一个更稳定的分支(工作由这个团队的很多人领导)位于 bloomberg fork on github in the airflow-kubernetes-executor branch,尽管它正在从一个不断移动的 airflow master 重新定位。

我的分支上有一个分支,它可以解决许多短期问题并且运行良好,称为 frankensteins-monster。尽管它现在对我有用,但使用它需要您自担风险。我正在使用位于 scripts/ci/kubernetes/docker.

中的 build.sh 脚本构建一个 docker 图像

祝你好运!

有两种将 Apache Airflow 与 Kubernetes 结合使用的方法:
通过将 Operator 与 KubernetesPodOperator 结合使用:

  • 它在 Kubernetes 集群外部的 Kubernetes Pod 中执行特定任务
  • 它允许您部署任意 Docker 个图像
  • 您基本上将依赖项卸载到容器(这太棒了!)

或者使用 KubernetesExecutor:

  • 每个任务实例一个新的 POD
  • 您可以自定义您的任务(资源分配)
  • 与 POD 执行器一样,您将依赖项卸载到容器
  • 您让您的 Airflow 集群充满活力!不再像 Celery Executor 那样浪费资源的空闲节点。
  • 你的 Airflow 集群变得容错(状态恢复)
  • 等等

要进行快速实验,您可以按照我刚刚在此处制作的教程进行操作: https://marclamberti.com/blog/airflow-kubernetes-executor/

希望对您有所帮助:)
干杯