pod_mutation_hook函数不适用于使用KubernetesExecutor在kubernetes中运行的气流

问题描述 投票:1回答:1

我正在尝试将在kubernetes中运行的气流部署从CeleryExecutor迁移到KubernetesExecutor。在本地开发环境中运行一切正常(在minikube上运行),但是我需要在生产环境中加载sidecar容器以运行允许我连接到sql数据库的代理。经过一番谷歌搜索,似乎在pod_mutation_hook上某个地方的airflow_local_settings.py文件中定义$PYTHONPATH函数是应该如何完成此工作的。

[首先,我尝试根据this示例在配置映射中定义它。例如

apiVersion: v1
kind: ConfigMap
metadata:
  name: airflow-config
  namespace: dev
data:
  ...

  AIRFLOW__KUBERNETES__LOGS_VOLUME_CLAIM: "airflow-logs"

  AIRFLOW__KUBERNETES__AIRFLOW_LOCAL_SETTINGS_CONFIGMAP: "airflow-config"
  ...

  airflow_local_settings.py: |
    from airflow.contrib.kubernetes.pod import Pod

    def pod_mutation_hook(pod: Pod):
        extra_labels = {
            "test-label": "True",
        }
        pod.labels.update(extra_labels)

我在airflow.cfg文件中指定了此configmap,并对其进行了拾取和安装,所有其他env变量均正常工作,但是pod_mutation_hook似乎没有运行,因为没有标签被添加到由启动的结果pod中kubernetes执行程序(请注意,此处还指定了日志卷声明,并且可以正常工作)。

接下来,我尝试根据注释airflow_local_settings.py中的建议在$AIRFLOW_HOME/configs/airflow_local_settings.py下为该作业启动气流的图像中定义here文件。我还从上面的airflow-config configmap中删除了相关部分。由于它也缺少指定的标签,因此这似乎对为该作业创建的结果窗格没有影响。

所以,我不确定在这一点上如何进行,因为我不知道如何指定airflow_local_settings.py文件和pod_mutation_hook函数,以便它们在运行之前实际上对pod进行了突变。任何帮助将不胜感激。谢谢。

kubernetes airflow minikube kubernetesexecutor
1个回答
0
投票

我有同样的问题,请确保可以从调度程序中导入airflow_local_settings。您必须将这些更改烘焙到图像中。

WORKDIR ${AIRFLOW_USER_HOME}
ENV PYTHONPATH  $PYTHONPATH:$AIRFLOW_HOME/config/
COPY airflow_local_settings.py $AIRFLOW_HOME/config/airflow_local_settings.py

使用上面突出显示的configmap会将它们带入执行程序,但此时不需要,因此也是一种无用的设置。随时阅读源代码:

https://github.com/apache/airflow/blob/8465d66f05baeb73dd4479b019515c069444616e/airflow/settings.py

© www.soinside.com 2019 - 2024. All rights reserved.