Добавление динамического PV/C в модули AirflowPython

Программы на Python
Гость
Добавление динамического PV/C в модули Airflow

Сообщение Гость »


Проблема: у меня есть воздушный поток в Kubernetes, и у меня проблема с огромной нагрузкой на диск на узлах.
Контекст: в день работает около 5 тысяч модулей, и они используют Python ETL. упаковка. Я использую KubernetesPodOperator Airflow для динамической генерации модулей с помощью класса KubernetesPodGenerator.
Предлагаемое решение: я могу использовать библиотеку kubernetes для создания PV и PVC согласно приведенному ниже коду. и он должен начать создавать модули с подключенным к образу PV. Если бы вы запустили этот код, вы бы получили такое поведение.

Код: Выделить всё

from airflow.contrib.operators.kubernetes_pod_operator import KubernetesPodOperator
from kubernetes import client as k8s

etl_image = "path_to_a_super_secret_image"

volume_mounts = [k8s.V1VolumeMount(name="dag-storage", mount_path='/data', sub_path=None, read_only=False)]

volumes = [
k8s.V1Volume(
name='dag-storage',
persistent_volume_claim=k8s.V1PersistentVolumeClaimVolumeSource(claim_name='dag-storage')
)
]

k = KubernetesPodOperator(
name="hello-dry-run",
image=etl_image,
cmds=["bash", "-cx"],
arguments=["echo", "10"],
env_from=[
k8s.V1EnvFromSource(
config_map_ref=k8s.V1ConfigMapEnvSource(name="etl-config")
)
],
labels={"foo": "bar"},
task_id="dry_run_demo",
volumes=volumes,
volume_mounts=volume_mounts
)

k.dry_run()
Problem: However, when I deploy this to airflow I do not get that mount, I get another one named "kube-api-access-1234" (1234 is variable, so that smells like programmatic creation). I do not see anything in my airflow code that would be adding this, so it must be something internal?
I also don't understand why it's overwriting the volume/mounts instead of appending them.


Источник: https://stackoverflow.com/questions/781 ... rflow-pods

Вернуться в «Python»