Apache Airflow 或 Argoproj 用于在 kubernetes 上长时间运行和 DAG 任务

sac*_*rus 7 celery google-cloud-platform kubernetes airflow argoproj

我们在 k8s 中有很多长时间运行的、内存/cpu 密集型作业,这些作业在谷歌云平台上的 kubernetes 上使用 celery 运行。然而,我们在扩展/重试/监控/警报/交付保证方面存在很大问题。我们想从 celery 转移到一些更高级的框架。

有一个比较:https : //github.com/argoproj/argo/issues/849但还不够。

空气流动:

  • 在社区有更好的支持 ~400 vs ~12 个标签在 SO,13k 星 vs ~3.5k 星
  • python 定义流的方式比仅使用 yaml 感觉更好
  • GCP 作为产品的支持:Cloud Composer
  • 更好的仪表板
  • 一些不错的运营商,如电子邮件运营商

阿尔戈项目:

  • 对 Kubernetes 的原生支持(我认为它在某种程度上更好)
  • 支持未来可能有用的 CI/CD/事件
  • (可能)更好地支持将结果从一项工作传递到另一项工作(在 Airflow xcom 机制中)

我们的 DAG 并没有那么复杂。我们应该选择哪些框架?

小智 8

Idiomatic Airflow 并不是真正设计为单独执行长时间运行的作业。相反,Airflow 旨在充当启动另一个服务中的计算作业(这由 Operator 完成)的促进者,同时监视给定计算作业的状态(这是由 Sensor 完成的)。

给定您的示例,Airflow 中所需的任何计算任务都将使用所使用的给定服务的适当 Operator 启动(Airflow 具有 GCP 挂钩以简化此操作),并且适当的 Sensor 将确定任务何时完成并且不再阻塞下游任务依赖在那个操作上。

虽然对 Argoproj 的细节不是很熟悉,但它似乎不像 Airflow 那样是一个“调度系统”,而更像是一个用于编排和实际执行大部分计算的系统。