能否在EC2部署Airflow webserver与调度器,使用EKS的KubernetesExecutor执行任务
方案可行性结论
你描述的部署架构完全可以实现,Airflow官方已经明确支持这种部署模式。你查到的官方说明已经直接支撑了该方案的合理性:
KubernetesExecutor runs as a process in the Airflow Scheduler. The scheduler itself does not necessarily need to be running on Kubernetes, but does need access to a Kubernetes cluster.
这段内容的含义是:KubernetesExecutor是运行在Airflow调度器进程内的模块,调度器本身不强制要求部署在Kubernetes中,只需要能够正常访问Kubernetes集群即可。
部署核心配置要求
要实现该架构,需要满足以下几个核心配置条件:
- EC2侧的EKS访问权限配置:运行Airflow调度器的EC2实例需要具备访问EKS集群的权限,可选两种配置方式:一是给EC2实例绑定拥有EKS操作权限的IAM角色,授予角色创建/删除Pod、读取ConfigMap等Kubernetes资源的权限;二是在EC2本地存放有权限的kubeconfig文件,确保Airflow进程有权限读取该配置文件。
- KubernetesExecutor参数配置:在Airflow的核心配置文件
airflow.cfg中完成KubernetesExecutor相关配置,需要指定EKS集群的API服务地址、任务Pod运行的命名空间(需提前在EKS中创建)、任务Pod使用的镜像、资源配额等参数,若使用本地kubeconfig还要配置kube_config_path参数指向文件路径。 - 版本与依赖一致性:需要保证EC2上部署的Airflow核心版本,和EKS任务Pod镜像中预装的Airflow版本完全一致,避免版本不兼容导致任务执行异常。自定义DAG、插件等文件可以选择存储在共享对象存储(如S3)中供任务Pod拉取,也可以直接打包到任务Pod镜像内。
- Webserver适配配置:部署在EC2上的Airflow Webserver不需要额外对接EKS的特殊配置,只要和调度器共享同一个元数据库即可正常运行。如果需要在Webserver中查看任务日志,可将日志存储路径配置为共享存储(如S3),保证Webserver和任务Pod都能正常读写日志。
部署验证建议
配置完成后可先运行一个简单的测试DAG,确认任务触发后EKS集群中会自动创建对应Pod执行任务,任务结束后Pod能自动销毁,且日志可以正常在Webserver中查看,即说明配置生效。
内容的提问来源于stack exchange,提问作者GilT
相关产品推荐
相关产品推荐

