Airflow 什么';在Kubernetes上调度任务的这些方法之间有什么区别?
我在Kubernetes吊舱上遇到了几种不同的安排气流任务的方法,但我还没有弄清楚它们之间的区别,以及何时我应该更喜欢一种样式而不是另一种样式 在上下文中,我的本地气流测试实例被配置为使用Airflow 什么';在Kubernetes上调度任务的这些方法之间有什么区别?,airflow,Airflow,我在Kubernetes吊舱上遇到了几种不同的安排气流任务的方法,但我还没有弄清楚它们之间的区别,以及何时我应该更喜欢一种样式而不是另一种样式 在上下文中,我的本地气流测试实例被配置为使用kubernetesecutor,我正在本地Kubernetes集群上调度这些任务 第一种风格(坦白地说,我没想到这会奏效——是什么 是否用作基础图像?) 第二种风格。我遇到了这个 第三种风格是通过KubernetesPodOperator这似乎是最灵活的(您可以指定任何带有任何参数的容器),所以这可能是唯一的
kubernetesecutor
,我正在本地Kubernetes集群上调度这些任务
KubernetesPodOperator
这似乎是最灵活的(您可以指定任何带有任何参数的容器),所以这可能是唯一的优势?然而,假设我只是调用bash脚本或python脚本,那么这与方法1或2(使用bash操作符或PythonOperator)有什么区别吗KubernetesPodOperator
适用于使用非kubernetes执行器,并且希望在kubernetes上运行映像的情况KuberneteSecutor
,那么像BashOperator
和PythonOperator
这样的操作符将被安排在Kubernetes上(尽管如果您没有指定,则不清楚它们使用的是什么图像)李>
KubernetesPodOperator
适用于使用非kubernetes执行器,并且希望在kubernetes上运行映像的情况KuberneteSecutor
,那么像BashOperator
和PythonOperator
这样的操作符将被安排在Kubernetes上(尽管如果您没有指定,则不清楚它们使用的是什么图像)李>
dag = DAG('ex1', default_args=default_args, schedule_interval=None)
# Single Operator DAG
BashOperator(
task_id='print_date',
bash_command='date',
dag=dag)
dag = DAG('ex2', default_args=default_args, schedule_interval=None)
# Why do you need to specify the executor when the executor is already configured via airflow.cfg?
BashOperator(
task_id='print_date',
bash_command='date',
dag=dag,
executor_config={"KubernetesExecutor": {"image": "ubuntu:1604"}})
dag = DAG('ex3', default_args=default_args, schedule_interval=None)
KubernetesPodOperator(namespace='default',
image="ubuntu:1604",
cmds=["/bin/bash","-c"],
arguments=["echo hello world"],
labels={"foo": "bar"},
name="EchoInAUbuntuContainer",
task_id="testUbuntuEcho",
get_logs=True,
dag=dag)