【发布时间】:2020-04-06 18:58:12
【问题描述】:
我正在尝试将在 kubernetes 中运行的气流部署从 CeleryExecutor 迁移到 KubernetesExecutor。在我的本地开发环境中一切都很顺利(在 minikube 上运行),但是我需要在生产中加载一个 sidecar 容器来运行允许我连接到我的 sql 数据库的代理。经过一番谷歌搜索后,似乎在$PYTHONPATH 某处的airflow_local_settings.py 文件中定义pod_mutation_hook 函数是应该如何完成此任务的。
首先,我尝试根据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 文件中指定了此配置映射,它被拾取并正常安装,所有其他环境变量都正常工作,但pod_mutation_hook 似乎没有运行,因为没有标签被添加到启动的结果 pod由 kubernetes 执行程序(请注意,此处还指定了日志卷声明,并且可以正常工作)。
接下来,我尝试在 $AIRFLOW_HOME/configs/airflow_local_settings.py 下为工作启动的图像中定义 airflow_local_settings.py 文件,正如评论 here 中所建议的那样。我还从上面的airflow-config configmap 中删除了相关部分。这似乎也对为作业创建的结果 pod 没有影响,因为它也缺少指定的标签。
所以,我现在不确定如何继续,因为我不明白我应该如何指定 airflow_local_settings.py 文件和 pod_mutation_hook 函数,以便它们在运行之前实际改变 pod。任何帮助将不胜感激。谢谢。
【问题讨论】:
标签: kubernetes airflow minikube kubernetesexecutor