簡體   English   中英

如何在Kubernetes集群上最好地運行Apache Airflow任務?

[英]How to best run Apache Airflow tasks on a Kubernetes cluster?

我們想要實現的目標:

我們希望使用Airflow來管理我們的機器學習和數據管道,同時使用Kubernetes來管理資源和安排作業。 我們希望實現的是Airflow協調工作流程(例如,各種任務依賴關系。在失敗時重新運行作業)和Kubernetes協調基礎設施(例如,群集自動調節和單個作業分配到節點)。 換句話說,Airflow將告訴Kubernetes集群做什么,Kubernetes決定如何分配工作。 與此同時,我們還希望Airflow能夠監控各個任務的狀態。 例如,如果我們在5個節點的集群中傳播10個任務,Airflow應該能夠與集群通信,並且報告顯示如下:3個“小任務”完成,1個“小任務”失敗並將被安排到重新運行,其余6個“大任務”仍在運行。

問題:

我們的理解是Airflow沒有Kubernetes-Operator,請參閱https://issues.apache.org/jira/browse/AIRFLOW-1314中的未解決問題。 話雖如此,我們不希望Airflow管理資源,如管理服務帳戶,env變量,創建集群等,而只需將任務發送到現有的Kubernetes集群,讓Airflow知道何時完成作業。 另一種方法是使用Apache Mesos,但與Kubernetes相比,它看起來不那么靈活,也不那么簡單。

我想我們可以使用Airflow的bash_operator來運行kubectl但這似乎不是最優雅的解決方案。

有什么想法嗎? 你怎么處理那件事呢?

Airflow既有Kubernetes Executor ,也有Kubernetes Operator

您可以使用Kubernetes Operator通過您喜歡的AirflowExecutor將任務(以Docker鏡像的形式)從Airflow發送到Kubernetes。

根據您的描述,我相信您正在尋找KubernetesExecutor來安排您的Kubernetes集群的所有任務。 從源代碼中可以看出,它與Kubernetes的集成更緊密。

這也可以讓您不必擔心Kubernetes操作員需要提前創建docker鏡像。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM