Интеграция Kubernetes с Apache Airflow

Мы создаем приложение для планирования рабочего процесса. Мы обнаружили, что Airflow является хорошим вариантом для диспетчера рабочих процессов и Kubernetes как хороший вариант для менеджера кластеров. Таким образом, поток будет,

  1. Мы отправим DAG рабочего процесса в Airflow.
  2. Airflow должен представить задачи данной DAG для Kubernetes, указав изображение докеров.
  3. Kubernetes должен выполнить задачу, запустив контейнер докера на доступном рабочем узле EC2 кластера.

При поиске мы обнаружили, что Airflow имеет операторы для интеграции с ECS, Mesos, но не для Kubernetes. Тем не менее, мы нашли запрос для оператора Kubernetes Operator on Airflow wiki, но никаких дополнительных обновлений на нем.

Итак, вопрос, который нужно просто поставить, - как интегрировать Airflow с Kubernetes?

Ответ 1

Это сейчас в полете. Вы просто можете следить за этим основным билетом в джире

Одна из наиболее стабильных ветвей (работа ведется большой частью этой команды) находится в блумбергской вилке на гитхаубе в ветке воздушного потока-кубернете-исполнителя, хотя она находится в процессе сбрасывания с постоянно движущегося мастера воздушного потока,

У меня есть ветка на моей вилке, которая затрагивает многие краткосрочные проблемы и работает достаточно хорошо, как называется frankensteins-monster. Используйте это на свой страх и риск, хотя он работает для меня прямо сейчас. Я build.sh изображение докера, используя скрипт build.sh расположенный в scripts/ci/kubernetes/docker.

Удачи!

Ответ 2

Мы проделали определенную работу по запуску Apache Airflow на Kubernetes с нашей Enterprise Edition http://enterprise.astronomer.io/airflow

Ответ 3

Существует два способа использования Apache Airflow с Kubernetes:
Используя Оператор с KubernetesPodOperator:

  • Он выполняет определенную задачу в модуле Kubernetes, где кластер Kubernetes является внешним
  • Позволяет развертывать произвольные образы Docker
  • Вы в основном выгружаете зависимости в контейнеры (что здорово!)

Или с помощью KubernetesExecutor:

  • Новый POD для каждого экземпляра задачи
  • Вы можете настроить свои задачи (распределение ресурсов)
  • Как и в случае с исполнителем POD, вы выгружаете зависимости в контейнеры
  • Вы делаете свой кластер Airflow динамичным! Нет больше пустых узлов, тратящих ресурсы, как с Celery Executor.
  • Ваш кластер Airflow становится отказоустойчивым (восстановление состояния)
  • и так далее

Для быстрого эксперимента вы можете следовать учебнику, который я только что сделал здесь: https://marclamberti.com/blog/airflow-kubernetes-executor/

Я надеюсь, что это помогает :)
ура