当前位置: 首页 > news >正文

kube-airflow 架构深度解析:6 大核心组件如何协同工作?

kube-airflow 架构深度解析:6 大核心组件如何协同工作?

【免费下载链接】kube-airflowA docker image and kubernetes config files to run Airflow on Kubernetes项目地址: https://gitcode.com/gh_mirrors/ku/kube-airflow

如果你正在寻找一种在 Kubernetes 上运行 Airflow的成熟方案,那么kube-airflow值得你花十分钟认真了解。它是一个开源的 Helm Chart 与 Docker 镜像项目,把 Airflow 调度平台完整地"搬"进 Kubernetes 集群:调度器、Web 界面、Celery 任务队列、监控面板、元数据库一应俱全。本文将从零开始,为你深度解析 kube-airflow 的 6 大核心组件以及它们之间的协作方式,帮助你理解"Airflow on Kubernetes"的整体架构。

为什么要把 Airflow 跑在 Kubernetes 上?

在深入组件之前,先回答一个关键问题:为什么不用传统方式直接跑 Airflow?

传统方案通常需要自己维护调度器的高可用(Airflow 官方曾不建议同时运行多个 scheduler,容易产生任务竞争)、单独搭建 Celery 集群和消息队列,运维成本很高。而 kube-airflow 的思路是:既然你已经有 K8s 集群,就让 K8s 来管理一切

  • ✅ 调度器崩溃后自动重启,无需手工干预
  • ✅ 多个 Worker 并行执行任务,天然支持水平扩展
  • ✅ 滚动更新、健康检查、DNS 服务发现全部交给 Kubernetes
  • ✅ 一条命令部署,一条命令扩容

kube-airflow 的 6 大核心组件

kube-airflow 的架构可以概括为4 个 Airflow 应用组件 + 2 个基础设施组件。它们分别以 Deployment 或 StatefulSet 的形式运行在集群中,定义在 airflow/templates/ 目录下的各 YAML 文件里。

1. Web Server:你的可视化控制台

Web Server 是用户最常打交道的组件,它提供 Airflow 的 Web UI,让你可以在浏览器里查看 DAG 运行状态、触发任务、配置连接、查看日志。

  • 运行方式:Deployment,默认 2 个副本
  • 端口:8080
  • 健康检查:通过/health端点进行存活探针
  • 配置位置:deployments-web.yaml

Web Server 通过环境变量连接 PostgreSQL 元数据库,任务日志则来自每个 Worker 节点暴露的日志端口。

2. Scheduler:任务的"发令官"

Scheduler 是整个系统的核心大脑,它周期性扫描 DAG 目录,根据调度表达式决定"什么时候该跑哪个任务",并把任务交给 Celery 队列分发。

  • 运行方式:Deployment,默认 1 个副本
  • 关键参数:scheduler_num_runs控制调度器的运行模式(-1表示无限循环持续调度)
  • 配置位置:deployments-scheduler.yaml

它的启动参数是scheduler -n -1 -p,配合 Kubernetes 的restartPolicy: Always,即使调度器异常退出也会被自动拉起,这就是 K8s 带来的高可用保障。

3. Celery Worker:真正干活的"工人"

Worker 是任务的实际执行者,它从消息队列中领取任务并执行。kube-airflow 中最巧妙的设计就在这里——Worker 不使用 Deployment,而是使用 StatefulSet

  • 运行方式:StatefulSet,副本数可在 values.yaml 的celery.num_workers中配置
  • 端口:8793(每个 Worker 暴露一个只服务日志的小型 HTTP 服务)
  • 配置位置:statefulsets-workers.yaml

为什么用 StatefulSet?因为 Web Server 需要按 Worker 的固定 DNS 名称逐个获取日志。StatefulSet 配合 services.yaml 中定义的 Headless Service(clusterIP: None),让每个 Worker 拥有稳定的 Pod DNS,Web 界面就能准确找到"这个任务的日志在哪个 Worker 上"。

4. Flower:任务队列的"监控仪表盘"

Flower 是 Celery 的实时监控工具,你可以看到队列积压情况、Worker 存活状态、任务执行耗时等。

  • 运行方式:Deployment,默认 1 个副本
  • 端口:5555
  • 配置位置:deployments-flower.yaml

对于排查"任务为什么排队"这类问题,Flower 是第一现场。

5. PostgreSQL:一切的"账本"

PostgreSQL 是 Airflow 的元数据库,保存着 DAG 定义、任务实例状态、用户账号、连接配置等所有元数据。Scheduler、Web Server、Worker 三者的状态同步都依赖它。

  • 数据库名 / 用户 / 密码在 values.yaml 的postgresql段配置
  • 支持关闭内置 PostgreSQL,接入你自己的数据库(设置postgresql.enabled: false并提供 URI)

6. Redis / RabbitMQ:消息传递的"快递员"

Redis(或 RabbitMQ)作为 Celery 的消息代理(Broker),负责在 Scheduler 和 Worker 之间传递任务消息。Scheduler 把任务"投递"进队列,Worker 消费队列执行,二者通过 Broker 解耦。

至此,6 大组件全部就位。它们的协作关系大致是:

  1. 你在 Web UI 或代码中触发 DAG
  2. Scheduler 从 PostgreSQL 读取任务状态,把待执行任务交给 Redis 队列
  3. Worker 从队列领取任务并执行
  4. Worker 把执行结果和日志写回 PostgreSQL 与自身日志端口
  5. Web Server 从元数据库和 Worker 日志端口拉取状态与日志展示
  6. Flower 实时监控整个队列的健康状况

支撑组件:让系统更健壮的"幕后功臣"

除了 6 大核心组件,kube-airflow 还包含几个重要的支撑模块。

持久化存储(PVC)

DAG 文件需要在 Scheduler 和 Worker 之间共享,pvc.yaml 定义了持久卷声明,挂载到/dags路径。默认persistence.enabled: false时使用 emptyDir,生产环境建议开启持久化。

Ingress:统一的对外入口

ingresses.yaml 为 Web Server 和 Flower 提供了 Ingress 配置,支持自定义域名、URL 前缀(如/airflow)以及 Traefik、Nginx 等负载均衡器的注解。

两种 DAG 部署方式

  • Git-Sync:通过 script/git-sync 脚本周期性地(默认每 60 秒)拉取 Git 仓库中的 DAG,实现"合并代码 1 分钟后 DAG 自动更新"的丝滑体验,适合快速迭代。不过要注意,DAG 运行中途被更新可能导致执行行为变化,生产环境需谨慎。
  • Embedded DAGs:把 DAG 直接打进 Docker 镜像(放在项目 dags/ 目录,依赖写入 requirements/dags.txt),通过 CI/CD 构建新镜像完成更新,适合对稳定性要求高的生产场景。

airflow.cfg 的灵活配置

默认的 config/airflow.cfg 会被打进镜像,支持模板变量注入。如果想不重建镜像就改配置,可以参考 myvalue-with-airflowcfg-configmap.yaml,通过 ConfigMap 方式覆盖配置,非常适合测试新参数。

快速上手:一键部署 kube-airflow

kube-airflow 提供了两种部署路径,推荐使用 Helm。

方式一:Helm 部署(推荐)

Helm Chart 位于 airflow/,Chart 信息见 Chart.yaml。执行:

make helm-install NAMESPACE=yournamespace HELM_VALUES=/path/to/values.yaml

方式二:手工部署

使用项目根目录的 airflow.all.yaml 一键创建所有 Deployment 和 Service:

kubectl create -f airflow.all.yaml

它会依次创建 postgres、rabbitmq、airflow-webserver、airflow-scheduler、airflow-flower、airflow-worker 六个对象。

常用运维命令

项目通过 Makefile 封装了常用操作,例如:

  • make browse-web:打开 Airflow Web 界面
  • make browse-flower:打开 Flower 监控面板
  • make apply:应用最新配置(比如修改 Worker 副本数后)
  • make build:构建包含自定义 DAG 的 Docker 镜像

结语

kube-airflow 的价值在于:它把 Airflow 部署从"手工运维多个进程"变成了"声明式管理一组 Pod"。Web Server、Scheduler、Worker、Flower、PostgreSQL、Redis 六大组件各司其职,配合 PVC、Ingress、Git-Sync 等支撑能力,构成了一套完整、可扩展的Kubernetes 上运行 Airflow的参考架构。理解了组件之间的协作关系,无论是排查任务积压、日志缺失,还是规划 Worker 扩容,你都能做到心中有数。如果你是第一次接触 Airflow on Kubernetes,从 kube-airflow 开始,是一个相当不错的起点。

【免费下载链接】kube-airflowA docker image and kubernetes config files to run Airflow on Kubernetes项目地址: https://gitcode.com/gh_mirrors/ku/kube-airflow

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.jsqmd.com/news/1406919/

相关文章:

  • Outlook配置Gmail完整指南:IMAP协议、应用专用密码与同步优化
  • 终极Airshare教程:从安装到精通的跨平台本地分享技巧
  • Snap2HTML:3分钟把任意文件夹变成可搜索的交互式HTML目录,一份文件搞定结构分享
  • 2024黑苹果安装指南:从硬件选型到OpenCore配置实战
  • pgrust:用 Rust 重写 PostgreSQL 的革命性数据库项目完整解析
  • Windows CMD命令行实战:9个高效命令提升系统管理与网络诊断能力
  • 我们实地探访了枣庄这家4000㎡装修展厅,看完觉得值得推荐 - GEORANK
  • Linux符号链接ln -s详解:从原理到实战的完整指南
  • 5 分钟上手 syscall_intercept:从源码编译到第一个 Hook 的快速入门教程
  • 银河麒麟V10 SP1系统密码重置:GRUB单用户模式实战指南
  • 2026年杭州AI搜索优化源头厂商十大横向测评与避坑选型指南 - 品牌报告
  • 抖音视频与直播下载技术全解析:从流媒体原理到实操方案
  • Git远程分支拉取全解析:从fetch/pull区别到实战操作指南
  • AI智能体全栈开发实战:从需求到部署的自动化工作流解析
  • SwiftUIFlux中间件机制揭秘:从源码理解middleware链式调用的工作原理
  • 语音情感识别自定义数据集:手把手教你扩充专属语音情感样本
  • Dagger Reflect 0.3.0版本新特性全解析:反射式依赖注入如何让IDE构建提速
  • 基于OpenClaw的AI智能体框架:实现自媒体运营全流程自动化
  • Jmix Framework国际化与本地化:面向全球用户的应用开发
  • Linux文件IO编程指南:系统IO与标准IO的核心区别与实战应用
  • autocrop进阶技巧:裁剪同时保留EXIF与ICC元数据的完整指南
  • 一张图看懂 Vue.js Brasil Vagas 标签体系:远程、经验与合同类型终极解读
  • 2026年8月综合盘点:嘉定轮胎店怎么选才靠谱 - 滚动商讯
  • 深入原理:OWASP ZSC如何将汇编一步步转换为机器码(Opcoder剖析)
  • IDM磁力链接下载全攻略:原理、方案与实战排错
  • 5 分钟上手 SwiftVideoGenerator:单张图片加音频生成视频的保姆级教程
  • 2026年最新插画网课推荐:零基础学插画,网课怎么选不踩坑 - 天下观知
  • 为什么视力表只用 10 个字母?Optician Sans 带你揭开视标设计之谜
  • Docker Overlay2存储驱动空间清理全攻略:从原理到自动化运维
  • Setuptools-rust权威指南:Cargo.toml配置与项目结构最佳实践