Интеграция Kubernetes с Apache Airflow
Мы создаем приложение для планирования рабочего процесса. Мы обнаружили, что Airflow является хорошим вариантом для диспетчера рабочих процессов и Kubernetes как хороший вариант для менеджера кластеров. Таким образом, поток будет,
- Мы отправим DAG рабочего процесса в Airflow.
- Airflow должен представить задачи данной DAG для Kubernetes, указав изображение докеров.
- 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/
Я надеюсь, что это помогает :)
ура