web-dev-qa-db-fra.com

Intégration de Kubernetes avec Apache Airflow

Nous construisons une application de planification de workflow. Nous avons trouvé Airflow comme une bonne option pour le gestionnaire de flux de travail et Kubernetes comme une bonne option pour le gestionnaire de cluster. Ainsi, le flux serait,

  1. Nous soumettrons le flux de travail DAG à Airflow.
  2. Airflow doit soumettre les tâches d'un DAG donné à Kubernetes en spécifiant l'image docker.
  3. Kubernetes doit exécuter la tâche en exécutant le conteneur Docker sur un nœud de travail EC2 disponible d'un cluster.

Lors de la recherche, nous avons constaté qu'Airflow a des opérateurs pour l'intégration avec ECS, Mesos mais pas pour Kubernetes. Cependant, nous avons trouvé une demande pour Kubernetes Operator sur Airflow wiki , mais pas de mise à jour supplémentaire à ce sujet.

Donc, la question à poser est simplement, comment intégrer Airflow à Kubernetes?

12
Free Coder

C'est en vol en ce moment. Vous pouvez simplement suivre ce billet Jira majeur

L'une des branches les plus stables (le travail est mené par beaucoup de cette équipe) est située dans la fourche bloomberg sur github dans la branche airflow-kubernetes-executor bien qu'elle soit en cours de rebasage hors d'un maître de flux d'air en mouvement constant.

J'ai une branche sur ma fourchette qui traite de nombreux problèmes à court terme et fonctionne assez bien appelée frankensteins-monster . Utilisez cela à vos risques et périls, bien que cela fonctionne pour moi en ce moment. Je crée une image Docker à l'aide du build.sh script situé dans scripts/ci/kubernetes/docker.

Bonne chance!

11
gurooj

Il existe deux façons d'utiliser Apache Airflow avec Kubernetes:
En utilisant un opérateur avec KubernetesPodOperator:

  • Il exécute une tâche spécifique dans un pod Kubernetes où le cluster Kubernetes est externe
  • Il vous permet de déployer des images Docker arbitraires
  • Vous déchargez essentiellement les dépendances dans des conteneurs (ce qui est génial!)

Ou en utilisant le KubernetesExecutor:

  • Un nouveau POD pour chaque instance de tâche
  • Vous pouvez personnaliser vos tâches (allocation des ressources)
  • Comme avec l'exécuteur POD, vous déchargez les dépendances dans des conteneurs
  • Vous dynamisez votre cluster Airflow! Plus de nœuds inactifs gaspillant des ressources comme avec Celery Executor.
  • Votre cluster Airflow devient tolérant aux pannes (récupération d'état)
  • etc

Pour une expérience rapide, vous pouvez suivre le tutoriel que je viens de faire ici: https://marclamberti.com/blog/airflow-kubernetes-executor/

J'espère que ça aide :)
À votre santé

0
Marc Lamberti