Apache Airflow UI中DAG频繁消失问题求助(GKE+Helm部署)
排查Airflow DAG短暂显示后消失的问题
1. 检查DAG解析日志
进入GKE上的Airflow scheduler pod,实时查看日志定位解析报错:
kubectl logs -n <你的Airflow命名空间> <scheduler-pod名称> -f
重点关注DAG解析相关的错误,比如隐性依赖缺失、dag_id重复、DAG对象未正确实例化等问题。
2. 验证DAG文件夹挂载与权限
- 进入scheduler pod检查DAG文件是否存在且权限合规:
kubectl exec -n <你的Airflow命名空间> <scheduler-pod名称> -- ls -l /opt/airflow/dags
确保文件所属用户/组与Airflow进程一致(通常为airflow:airflow)。
- 核对Helm values中的DAG挂载配置,确认
dags.persistence.enabled设置正确,存储卷路径映射无偏差。
3. 检查Airflow核心配置
- 确认
core.dag_dir_list_interval(默认300秒)未被异常修改,避免DAG被频繁刷新移除。 - 检查
core.dag_file_processor_timeout设置,若DAG解析超时会被标记为失败并从UI中移除。
4. 排查数据库状态
Helm部署的Airflow通常使用外部数据库(如PostgreSQL),需确认数据库连接与DAG记录状态:
- 验证数据库连接:
kubectl exec -n <你的Airflow命名空间> <scheduler-pod名称> -- airflow db check
- 查询目标DAG在数据库中的状态:
kubectl exec -n <你的Airflow命名空间> <postgres-pod名称> -- psql -U <Airflow数据库用户> -d <Airflow数据库名> -c "select dag_id, is_active from dag where dag_id='<你的DAG ID>';"
若记录存在但is_active为false,手动更新激活:
update dag set is_active=true where dag_id='<你的DAG ID>';
5. 确认Scheduler运行状态
检查scheduler pod是否稳定,无频繁重启:
kubectl get pods -n <你的Airflow命名空间> | grep scheduler
若存在重启,排查资源不足、配置错误等触发原因。
6. 复查DAG代码细节
即使无语法错误,也需确认:
start_date设置为过去的时间,且未设置已过期的end_date(过期DAG会被标记为不活跃)。- DAG对象被正确实例化并导出,例如:
from airflow import DAG from datetime import datetime with DAG( dag_id='my_sample_dag', start_date=datetime(2024, 1, 1), schedule_interval='@daily' ) as dag: # 任务定义
确保dag变量未被覆盖或未正确暴露。
内容的提问来源于stack exchange,提问作者Ayush Raj
相关产品推荐
相关产品推荐

