如何解决 Airflow 中的 DeprecationWarning 警告

本文详解如何消除 airflow cli 运行时出现的 kubernetes 配置项弃用警告(deprecationwarning),核心是将 airflow.cfg 中已迁移的配置节从 `[kubernetes]` 正确更新为 `[kubernetes_executor]`。

Airflow 自 2.0 版本起逐步重构 Kubernetes 相关配置结构,原属于 [kubernetes] 配置节下的 namespace 等关键参数(如 namespace、worker_container_repository、worker_container_tag 等)已被正式迁移至独立的 [kubernetes_executor] 节。若 airflow.cfg 中仍保留旧配置节,Airflow 会在启动或执行 CLI 命令(如 airflow info、airflow db migrate)时触发如下警告:

DeprecationWarning: The namespace option in [kubernetes] has been moved to the namespace option in [kubernetes_executor] - the old setting has been used, but please update your config.

该警告虽不影响功能运行,但会干扰日志可读性,并可能在后续版本中升级为错误。

解决步骤如下:

  1. 定位并打开 airflow.cfg 文件
    通常位于 $AIRFLOW_HOME/airflow.cfg(默认为 ~/airflow/airflow.cfg)。可通过以下命令确认路径:

    airflow config get-value core airflow_home
  2. 查找并迁移配置节
    使用文本编辑器搜索 [kubernetes] 配置节(常见于文件约第 1086 行附近),将其整体重命名为 [kubernetes_executor]。例如:

    ❌ 旧配置(触发警告):

    [kubernetes]
    namespace = default
    worker_container_repository = apache/airflow
    worker_container_tag = 2.9.0

    ✅ 新配置(推荐写法):

    [kubernetes_executor]
    namespace = default
    worker_container_repository = apache/airflow
    worker_container_tag = 2.9.0
  3. 删除或注释旧节(重要!)
    若同时存在 [kubernetes] 和 [kubernetes_executor] 两个节,Airflow 会优先读取旧节并继续报警告。请确保旧 [kubernetes] 节完全移除或注释掉(如加 # 前缀),避免冲突。

  4. 验证修复效果
    重启 Airflow(如需)后执行任意 CLI 命令,警告应不再出现:

    airflow info | head -n 10

⚠️ 注意事项:

  • 修改 airflow.cfg 后,需确保所有 Airflow 组件(Webserver、Scheduler、Workers)均使用更新后的配置;若使用容器部署,请同步更新配置挂载或环境变量注入逻辑。
  • 若通过环境变量(如 AIRFLOW__KUBERNETES__NAMESPACE)设置参数,也需同步改为 AIRFLOW__KUBERNETES_EXECUTOR__NAMESPACE。
  • 推荐参考 Airflow 官方配置文档 获取最新支持参数列表。

完成上述迁移后,DeprecationWarning 将彻底消失,配置更符合当前版本规范,也为未来升级铺平道路。