You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Kubernetes上运行Airflow 2.5.0时遇Errno 13权限拒绝问题

在Kubernetes上运行Airflow 2.5.0遇到PermissionError问题

报错信息

File "/usr/local/bin/airflow", line 5, in <module>
    from airflow.__main__ import main
  File "/usr/local/lib/python3.9/site-packages/airflow/__init__.py", line 34, in <module>
    from airflow import settings
  File "/usr/local/lib/python3.9/site-packages/airflow/settings.py", line 37, in <module>
    from airflow.configuration import AIRFLOW_HOME, WEBSERVER_CONFIG, conf  # NOQA F401
  File "/usr/local/lib/python3.9/site-packages/airflow/configuration.py", line 1732, in <module>
    conf = initialize_config()
  File "/usr/local/lib/python3.9/site-packages/airflow/configuration.py", line 1487, in initialize_config
    shutil.copy(_default_config_file_path("default_webserver_config.py"), WEBSERVER_CONFIG)
  File "/usr/local/lib/python3.9/shutil.py", line 427, in copy
    copyfile(src, dst, follow_symlinks=follow_symlinks)
  File "/usr/local/lib/python3.9/shutil.py", line 266, in copyfile
    with open(dst, 'wb') as fdst:
PermissionError: [Errno 13] Permission denied: '/usr/local/airflow/webserver_config.py'

已尝试的解决方法

  • 设置load_examples = False
  • 重置数据库

当前文件权限

-rw-r--r--  1 airflow airflow  4744 Mar 20 13:52 webserver_config.py

可行解决方案

1. 修复挂载目录的权限(K8s环境核心排查点)

Kubernetes中,文件本身权限正确不代表挂载目录权限没问题:

  • 确认挂载到/usr/local/airflow的存储卷(PVC/hostPath)所属用户/组为airflow(官方镜像默认UID/GID是50000)
  • 若使用hostPath,在宿主机执行:
    chown -R 50000:50000 /宿主机上的airflow目录路径
    
  • 若使用PVC,在Deployment的initContainers中添加权限修复步骤:
    initContainers:
      - name: fix-permissions
        image: busybox:latest
        command: ["sh", "-c", "chown -R 50000:50000 /usr/local/airflow"]
        volumeMounts:
          - name: airflow-home
            mountPath: /usr/local/airflow
    

2. 阻止Airflow自动覆盖配置文件

通过环境变量指定已存在的配置文件,避免Airflow尝试生成新文件:
在Deployment的env中添加:

env:
  - name: AIRFLOW__WEBSERVER__WEBSERVER_CONFIG
    value: /usr/local/airflow/webserver_config.py

或直接在airflow.cfg中配置:

[webserver]
webserver_config = /usr/local/airflow/webserver_config.py

3. 确认Pod运行用户

检查Deployment的securityContext,确保Pod以airflow用户运行:

securityContext:
  runAsUser: 50000
  runAsGroup: 50000

如果设置了其他UID,需同步调整文件和目录的权限。

4. 手动生成配置文件并挂载

提前生成配置文件,通过ConfigMap挂载到Pod中:

  1. 本地生成配置:
    airflow users create --username admin --firstname Admin --lastname User --role Admin --email admin@example.com
    
  2. 创建ConfigMap:
    kubectl create configmap airflow-webserver-config --from-file=webserver_config.py
    
  3. 在Deployment中挂载:
    volumeMounts:
      - name: webserver-config
        mountPath: /usr/local/airflow/webserver_config.py
        subPath: webserver_config.py
    volumes:
      - name: webserver-config
        configMap:
          name: airflow-webserver-config
    

内容的提问来源于stack exchange,提问作者Driss NEJJAR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 02:55:34