Helm升级Airflow时Worker崩溃:Postgres域名解析临时失败
解决方案
1. 修正Dockerfile语法错误
你的Dockerfile存在路径书写错误,导致插件目录复制异常,破坏了Airflow默认配置:
FROM apache/airflow:2.3.0-python3.7 COPY ./dags/ /opt/airflow/dags/ COPY ./plugins/ /opt/airflow/plugins/ # 移除了多余的"docker push" COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt # 添加--no-cache-dir优化镜像体积 EXPOSE 5555
2. 重新构建并加载镜像
docker build -f base.dockerfile --pull --tag lqc-airflow:0.0.2 . minikube image load lqc-airflow:0.0.2
3. 更新Helm部署
helm upgrade $RELEASE_NAME apache-airflow/airflow --namespace $NAMESPACE --set images.airflow.repository=lqc-airflow --set images.airflow.tag=0.0.2
问题根源
错误的COPY命令将docker push作为目标路径的一部分,导致Airflow worker的内部配置文件被篡改,使得Celery无法读取Helm注入的正确数据库连接配置,转而使用默认的postgres主机名,引发DNS解析失败。官方镜像运行时会通过Helm注入的环境变量覆盖默认配置,你的错误操作破坏了这一机制。
验证步骤(可选)
修复后可进入worker Pod检查数据库连接配置:
kubectl exec -it airflow-worker-0 -n $NAMESPACE -- env | grep AIRFLOW__DATABASE__SQL_ALCHEMY_CONN
正常输出应包含正确的Postgres服务地址,格式类似:AIRFLOW__DATABASE__SQL_ALCHEMY_CONN=postgresql+psycopg2://airflow:airflow@<RELEASE_NAME>-postgres:5432/airflow
内容的提问来源于stack exchange,提问作者khanna
相关产品推荐
相关产品推荐

