Рубрики
Без рубрики

Как настроить воздушный поток на Кубернес?

Воздушный поток на Кубернане Этот блог проводит вас через шаги на том, как развернуть воздушный поток на KU … Теги от воздушного потока, Python, Kubernetes.

Этот блог проходит вас через ступеньки о том, как развернуть воздушный поток на Kubernetes. Если вы прыгаете на код напрямую Вот репо Github Отказ

Что такое воздушный поток

AIRFLOW – это платформа, созданная сообществом для программных работников, расписаний и мониторинга рабочих процессов.

Воздушный поток позволяет определить рабочий процесс в виде направленного ациклического графа (DAG), определенного в файле Python. Наиболее известным использованием случая воздушного потока является инженерами для учебников данных/машин, построенные трубопроводами данных, которые выполняют преобразования.

Воздушный поток с кубернанами

Есть куча преимуществ бегущего воздушного потока над Кубератусами.

Масштабируемость

Воздушный поток запускает один работник POD на задачу воздушного потока, что позволяет Kubernetes раскрутить и уничтожать стручки в зависимости от нагрузки.

Оптимизация ресурсов

Kubernetes вращает рабочие подмыслистые только тогда, когда есть новая работа. Принимая во внимание, что альтернативы, такие как сельдерея, всегда имеют рабочие подмыслистые, чтобы забрать задачи, когда они прибывают.

Предварительные условия

  1. Kubectl
  2. Докер
  3. Реестр Docker Image для подталкивания ваших изображений Docker
  4. Кластер Kubernetes на GCP/AWS.

Архитектура воздушного потока

Airflow имеет 3 основных компонента.

  1. WebServer – который обслуживает вам модных интерфейсов со списком DAGS, Logs и задач.
  2. Планировщик – который работает на фоне и графики задач и управляет их
  3. Рабочие/исполнители – Это процессы, которые выполняют задачи. Рабочие процессы разрушаются планировщиками и отслеживаются по их завершу

Кроме того, есть

  1. Папки DAG
  2. Журнал папок
  3. База данных

Существуют разные виды исполнителей, которые можно использовать с воздушным потоком.

  1. Localexecutor – используется в основном для игры на местной машине.
  2. CeleryExecutor – использует работники сельдерея для запуска задач
  3. KubernetesexecuteCutor – использует стручки Kubernetes для запуска рабочих задач

Воздушный поток с кубернанами

По планированию задачи с исполнителем воздушного потока Kubernetes, планировщик вращается на POD и запускает задачи. По завершении задачи POD убит. Он обеспечивает максимальное использование ресурсов, в отличие от сельдерея, который в любой момент должен иметь минимальное количество работников.

Строительство образа докера

Основная часть здания Docker Image делает установку PIP.

RUN pip install --upgrade pip

RUN pip install apache-airflow==1.10.10
RUN pip install 'apache-airflow[kubernetes]'

Нам также нужен скрипт, который запускал бы веб сервер или Планировщик на основе стручка или контейнера Kubernetes. У нас есть файл под названием Bootstrap.sh сделать то же самое.

if ["$1" = "webserver"]
then
    exec airflow webserver
fi

if ["$1" = "scheduler"]
then
    exec airflow scheduler
fi

Давайте также добавим их в файл докера.

COPY bootstrap.sh /bootstrap.sh
RUN chmod +x /bootstrap.sh
ENTRYPOINT ["/bootstrap.sh"]

Давайте построим и нажав изображение

docker build -t  .
docker push 

Конфигурация Kubernetes

Этот раздел объясняет различные части build/airflow.yaml.

  1. Развертывание Kubernetes работает с POD, работающим как веб-контейнерами WebServer и планировщика
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
 name: airflow
 namespace: airflow-example
spec:
 replicas: 1
 template:
 metadata:
 labels:
 name: airflow
 spec:
 serviceAccountName: airflow
 containers:
 - name: webserver
 ...
 - name: scheduler
 ...
 volumes:
 ...
 ...

  1. Сервис, чья внешний IP сопоставлен на веб-сервер AirFlow
apiVersion: v1
kind: Service
metadata:
 name: Airflow
spec:
 type: LoadBalancer
 ports:
 - port: 8080
 selector:
 name: airflow

  1. СЕРВИЖЕНИЕ, КОТОРЫЙ С Роль раскрутить и удалять новые стручки. Они предоставляют разрешения на планировщик воздушного потока для раскрутки рабочих стручков.
apiVersion: v1
kind: ServiceAccount
metadata:
 name: airflow
 namespace: airflow-example
--------
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
 namespace: airflow-example
 name: airflow
rules:
- apiGroups: [""] # "" indicates the core API group
 resources: ["pods"]
 verbs: ["get", "list", "watch", "create", "update", "delete"]
- apiGroups: ["batch", "extensions"]
 resources: ["jobs"]
 verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
-------- 

  1. Две постоянные тома для хранения DAGS и Logs
kind: PersistentVolume
apiVersion: v1
metadata:
 name: airflow-dags
spec:
 accessModes:
 - ReadOnlyMany
 capacity:
 storage: 2Gi
 hostPath:
 path: /airflow-dags/
--------
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
 name: airflow-dags
spec:
 accessModes:
 - ReadOnlyMany
 resources:
 requests:
 storage: 2Gi

  1. Файл конфигурации воздушного потока создан как карта конфигурации Kubernetes и прикреплена к POD. Оформить заказ Build/configmaps.yaml.
  2. Конфигурация Postgres обрабатывается через отдельное развертывание
  3. Секреты, такие как Postgres Password, создаются с использованием секретов Kubernetes
  4. Если вы хотите дополнительные переменные ENV, используйте Kubernetes configmap Отказ

Развертывание

Вы можете развернуть стручки воздушного потока в 2 режима.

  1. Используйте постоянный том для хранения DAGS
  2. Получите использование Git, чтобы потянуть дагс из

Чтобы настроить стручки, нам нужно запустить Deploy.sh Сценарий, который делает следующее

  1. Конвертировать шаблонный конфиг под Шаблоны Для Kube Config файлов под строить.
  2. Удаляет существующие стручки, развертывание. Если есть в пространстве имен
  3. Создавать новые стручки, развертывания и другие ресурсы Kube
export IMAGE=
export TAG=
cd airflow-kube-setup/scripts/kube
 ./deploy.sh -d persistent_mode

Тестирование установки

По умолчанию эта настройка копирует все примеры в Dags; Мы можем просто запустить один из них и посмотреть, все ли работает нормально.

  1. Получите URL воздушного потока, запустив Kubectl Получить услуги
  2. Войдите в воздушный поток, используя поток воздуха и поток воздуха. Вы можете изменить это значение в airflow-test-init.sh.
  3. Выберите один из файлов DAG перечисленный
  4. На вашем терминале работает Kubectl Получить Pods --watch заметить, когда работающие рабочие созданы
  5. Нажмите на TrigggerDag Чтобы вызвать одну из заданий
  6. На графике представление вы можете видеть, как выполняется выполнение задач, а на вашем терминале создаются новые стручки и выключите выполнение задач.

Техническое обслуживание и модификация

Как только он развернут, вам не нужно запускать этот сценарий каждый раз. Вы можете использовать базовые команды kubectl для удаления или перезапуска Pods.

k get pods --watch 
k logs  
k exec -it $pod_name --container webserver -- /bin/bash

Есть вопрос?

Поднять их как проблемы на Git Repo

использованная литература

Apache Airflow. https://airflow.incubator.apache.org/index.html.

Оригинал: “https://dev.to/bhavaniravi/how-to-set-up-airflow-on-kubernetes-24i8”