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

Airflow Helm Chart部署后步骤及CeleryExecutor任务停滞问题排查

解决AWS EKS上Bitnami Airflow Helm Chart(CeleryExecutor)的任务停滞问题

从你的描述来看,核心问题出在Worker Pod未就绪(0/1 Running)——这直接导致CeleryExecutor模式下任务无法被执行,进而引发调度器超时和UI的心跳提示。咱们一步步来排查修复:

1. 先搞清楚Worker Pod为什么没就绪

Worker是Celery模式下执行任务的核心,它没正常启动的话,调度器发的任务永远会卡在队列里。

查看Worker Pod的启动日志

先看看Worker启动时有没有报错信息:

kubectl logs bitnami-release-airflow-worker-0

常见的错误原因包括:

  • Redis连接失败(密码错误、网络不通)
  • Airflow配置问题(比如Fernet Key不正确)
  • 依赖缺失或者文件权限问题

验证Worker与Redis的连通性

Celery依赖Redis作为消息队列,先确认Worker能正常连上Redis:

# 先ping Redis Pod,检查网络连通性
kubectl exec bitnami-release-airflow-worker-0 -- ping bitnami-release-redis-master-0
# 用Redis-cli验证密码和连接有效性
kubectl exec bitnami-release-airflow-worker-0 -- redis-cli -h bitnami-release-redis-master-0 -a 你的REDIS_PASSWORD ping

如果返回PONG说明连接正常,否则检查Redis密码是否和你部署时设置的一致,或者Redis Pod是否正常运行。

查看Worker Pod的事件记录

看看有没有启动失败、探针超时的关键信息:

kubectl describe pod bitnami-release-airflow-worker-0

重点看Events部分,比如是否有Readiness probe failed或者Insufficient CPU/Memory这类提示。

2. 修复调度器的超时问题

你手动执行airflow scheduler其实是多余的——Bitnami的Chart已经用进程管理器(比如supervisor)自动管理调度器进程了,手动启动会和原有进程冲突,导致异常。

停止手动启动的调度器进程

kubectl exec -it bitnami-release-airflow-scheduler-774d647447-j6vpd -- bash
# 杀死手动启动的scheduler进程
pkill -f "airflow scheduler"
exit

重启调度器Pod让Chart自动管理

kubectl delete pod bitnami-release-airflow-scheduler-774d647447-j6vpd

Kubernetes会自动重建Pod,Chart的初始化脚本会正确启动调度器进程。

3. 确认Airflow的核心配置是否正确

验证Executor类型

确保Airflow用的是CeleryExecutor:

kubectl exec bitnami-release-airflow-web-5897c99754-hq6nr -- cat /opt/bitnami/airflow/airflow.cfg | grep executor

正常应该返回executor = CeleryExecutor。

验证Broker URL

确认Celery的消息队列配置正确:

kubectl exec bitnami-release-airflow-web-5897c99754-hq6nr -- cat /opt/bitnami/airflow/airflow.cfg | grep broker_url

应该看到类似redis://:你的密码@bitnami-release-redis-master-0:6379/0的配置,确保密码和地址都正确。

4. 安装Helm Chart后的正确步骤(划重点)

Bitnami的Airflow Chart已经做了所有初始化工作,你完全不需要手动执行这些操作:

  • 不需要手动运行airflow initdb:Chart的初始化容器已经完成了数据库迁移和用户创建
  • 不需要手动启动任何服务:webserver、scheduler、worker都是由Chart自动管理的,Kubernetes会保证它们正常运行
  • 部署完成后只需要做:
    # 端口转发Web服务到本地
    kubectl port-forward svc/airflow-web 8080:8080
    # 然后访问http://127.0.0.1:8080登录即可
    

5. 资源不足的情况(如果上述步骤都没问题)

如果EKS节点的CPU/内存不够,Worker可能无法完成初始化。检查节点资源使用:

kubectl top nodes

如果资源紧张,可以调整Chart的资源请求和限制,比如升级部署:

helm upgrade airflow bitnami/airflow \
--set worker.resources.requests.cpu=100m \
--set worker.resources.requests.memory=256Mi \
--set worker.resources.limits.cpu=500m \
--set worker.resources.limits.memory=512Mi

内容的提问来源于stack exchange,提问作者alt-f4

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:04:56