web-dev-qa-db-ja.com

KubernetesとApache Airflowの統合

ワークフロースケジューリングアプリケーションを構築しています。 Airflowはワークフローマネージャーの適切なオプションであり、Kubernetesはクラスターマネージャーの適切なオプションであることがわかりました。したがって、フローは

  1. ワークフローDAGをAirflowに送信します。
  2. Airflowは、Dockerイメージを指定して、特定のDAGのタスクをKubernetesに送信する必要があります。
  3. Kubernetesは、クラスターの利用可能なEC2ワーカーノードでdockerコンテナーを実行してタスクを実行する必要があります。

検索の結果、AirflowにはECS、Mesosと統合するためのオペレーターがありますが、Kubernetes用ではありません。ただし、Kubernetes Operatorのリクエストは Airflow wiki で見つかりましたが、それ以上の更新はありません。

簡単に言うと、AirflowとKubernetesをどのように統合するのでしょうか?

12
Free Coder

これは現在飛行中です。 このメジャーjiraチケット

より安定したブランチの1つ(作業はこのチームの多くによって導かれています)は、 airflow-kubernetes-executorブランチのgithubにあるbloombergフォーク にありますが、リベース中です常に移動するエアフローマスターから。

私のフォークには、短期間の問題の多くに対処するブランチがあり、 frankensteins-monster と呼ばれる十分なパフォーマンスを発揮します。これは今のところ私にとっては有効ですが、ご自身の責任で使用してください。 build.shにあるscripts/ci/kubernetes/dockerスクリプトを使用して、Dockerイメージを構築しています。

幸運を!

11
gurooj

KubernetesでApache Airflowを使用する方法は2つあります。
KubernetesPodOperatorでオペレーターを使用することにより:

  • Kubernetesクラスターが外部にあるKubernetesポッドで特定のタスクを実行します
  • 任意のDockerイメージをデプロイできます
  • 基本的に、依存関係をコンテナにオフロードします(これは素晴らしいことです!)

または、KubernetesExecutorを使用して:

  • すべてのタスクインスタンスの新しいPOD
  • タスクをカスタマイズできます(リソース割り当て)
  • POD executorと同様に、依存関係をコンテナーにオフロードします
  • Airflowクラスターを動的にします! Celery Executorのようにリソースを無駄にするアイドルノードはもうありません。
  • Airflowクラスターがフォールトトレラントになります(状態回復)
  • 等々

簡単な実験のために、ここで作成したチュートリアルに従うことができます。 https://marclamberti.com/blog/airflow-kubernetes-executor/

私はそれが役立つことを願っています:)
乾杯

0
Marc Lamberti