如何在Kubernetes集群上最好地运行Apache Airflow任务?

如何在Kubernetes集群上最好地运行Apache Airflow任务?,kubernetes,airflow,job-scheduling,Kubernetes,Airflow,Job Scheduling,我们想要实现的目标: 我们希望使用Airflow来管理我们的机器学习和数据管道,同时使用Kubernetes来管理资源和安排作业。我们希望实现的是让Airflow协调工作流程(例如,各种任务依赖关系。失败后重新运行作业)和Kubernetes协调基础设施(例如,群集自动缩放和将单个作业分配给节点)。换句话说,气流将告诉Kubernetes集群做什么,Kubernetes决定如何分配工作。同时,我们还希望气流能够监控各个任务的状态。例如,如果我们有10个任务分布在一个由5个节点组成的集群中,那么气

我们想要实现的目标:

我们希望使用Airflow来管理我们的机器学习和数据管道,同时使用Kubernetes来管理资源和安排作业。我们希望实现的是让Airflow协调工作流程(例如,各种任务依赖关系。失败后重新运行作业)和Kubernetes协调基础设施(例如,群集自动缩放和将单个作业分配给节点)。换句话说,气流将告诉Kubernetes集群做什么,Kubernetes决定如何分配工作。同时,我们还希望气流能够监控各个任务的状态。例如,如果我们有10个任务分布在一个由5个节点组成的集群中,那么气流应该能够与集群通信,并且报告显示:3个“小任务”已完成,1个“小任务”已失败,将计划重新运行,其余6个“大任务”仍在运行

问题:

我们的理解是气流没有Kubernetes算符,请参阅。也就是说,我们不希望Airflow管理资源,如管理服务帐户、环境变量、创建集群等,只需将任务发送到现有的Kubernetes集群,并在任务完成时通知Airflow。另一种选择是使用ApacheMesos,但与Kubernetes相比,它看起来不那么灵活和简单

我想我们可以使用Airflow的bash_操作符来运行
kubectl
,但这似乎不是最优雅的解决方案

有什么想法吗?你如何处理这个问题?

气流既有a又有a

您可以使用Kubernetes操作符通过您喜欢的AirflowExecutor将任务(以Docker图像的形式)从Airflow发送到Kubernetes

不过,根据您的描述,我相信您正在寻找Kubernetes执行器来根据Kubernetes集群安排所有任务。从源代码中可以看出,它与Kubernetes的集成要紧密得多


这也将使您不必担心按照Kubernetes操作员的要求提前创建docker映像。

关于此操作的进度有更多更新吗?:\