我们想要达到的目标:
我们希望使用 Airflow 来管理我们的机器学习和数据管道,同时使用 Kubernetes 来管理资源和安排作业。我们想要实现的是让 Airflow 编排工作流(例如各种任务依赖关系。在失败时重新运行作业)和 Kubernetes 编排基础设施(例如集群自动扩展和单个作业分配给节点)。换句话说,Airflow 将告诉 Kubernetes 集群该做什么,而 Kubernetes 决定如何分配工作。同时,我们还希望 Airflow 能够监控各个任务的状态。例如,如果我们有 10 个任务分布在 5 个节点的集群中,Airflow 应该能够与集群通信,并且报告显示如下:3 个“小任务”已完成,
问题:
我们的理解是 Airflow 没有 Kubernetes-Operator,请参阅https://issues.apache.org/jira/browse/AIRFLOW-1314上的未解决问题。话虽如此,我们不希望 Airflow 管理诸如管理服务帐户、环境变量、创建集群等资源,而只是将任务发送到现有的 Kubernetes 集群并让 Airflow 知道工作何时完成。另一种选择是使用 Apache Mesos,但与 Kubernetes 相比,它看起来不太灵活且不太直接。
我想我们可以使用 Airflow 的 bash_operator 来运行kubectl,但这似乎不是最优雅的解决方案。
有什么想法吗?你怎么处理那件事呢?