docker-compose部署Airflow KubernetesExecutor无法连接Minikube报错
故障根因
错误日志显示Airflow KubernetesExecutor默认优先尝试加载集群内服务账户配置(load_incluster_config),只有集群内配置加载失败才会 fallback 到读取本地kubeconfig文件,你挂载了kubeconfig但没关闭集群内配置探测,所以触发了报错。
排查修复步骤
- 第一步:显式关闭集群内配置加载
在x-airflow-common的environment配置块中新增环境变量:
这个参数强制Airflow跳过集群内配置探测,直接读取本地kubeconfig文件。AIRFLOW__KUBERNETES__IN_CLUSTER: 'false' - 第二步:修复kubeconfig文件权限
你当前Airflow运行用户是${AIRFLOW_UID:-50000},挂载的宿主机~/.kube目录默认是宿主机用户权限,需要确保容器内的airflow用户有读取权限,在宿主机执行以下命令即可:chmod -R 755 ~/.kube - 第三步:修正Minikube访问地址
Minikube默认生成的kubeconfig里server地址为https://127.0.0.1:8443,但Airflow跑在Docker容器内,127.0.0.1指向容器自身而非宿主机,需要修改kubeconfig的访问地址:- 执行
minikube ip获取Minikube的对外IP - 将
~/.kube/config里的server字段修改为https://<minikube-ip>:8443
- 执行
- 第四步:验证配置生效
进入scheduler容器手动验证集群连通性:
正常输出节点信息说明配置生效,重启Airflow服务即可正常使用KubernetesExecutor。docker-compose exec airflow-scheduler bash kubectl get nodes
可选优化
KubernetesExecutor不需要依赖Redis服务,你可以把docker-compose里的redis服务和对应依赖项删除,减少不必要的资源占用。
内容的提问来源于stack exchange,提问作者val
相关产品推荐
相关产品推荐

