12

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

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

在搜索中,我们发现 Airflow 有用于与 ECS、Mesos 集成但不用于 Kubernetes 的 Operator。但是,我们在Airflow wiki上找到了对 Kubernetes Operator 的请求,但没有任何进一步的更新。

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

4

2 回答 2

12

这正在飞行中。您只需跟随这张主要的 jira 票即可

一个更稳定的分支(工作由这个团队的很多人领导)位于github 上的气流-kubernetes-executor 分支中的Bloomberg fork,尽管它正在从不断移动的气流主控器中重新建立基础.

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

祝你好运!

于 2018-01-25T18:20:08.220 回答
1

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

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

或者通过使用 KubernetesExecutor:

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

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

我希望它有帮助:)
干杯

于 2019-06-30T13:32:48.593 回答