Проблема: у меня есть воздушный поток в 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()
I also don't understand why it's overwriting the volume/mounts instead of appending them.
Источник: https://stackoverflow.com/questions/781 ... rflow-pods