airflow系列之K8S部署airflow2.5.1

本文记录了笔者最近基于Helm在K8S上部署airflow2.5.1版本遇到的一系列问题及最终的一键部署脚本,欢迎关注算法小生免费阅读

由于之前在airflow的使用上是单worker节点,为了支持多worker节点以及简化部署流程,特此新增了airflow-plus[命名空间也为此,防止影响目前运行的任务,稳定后任务在切换]

笔者遇到了以下问题,将会为你一一解答

  • airflow db init未执行报错问题
  • redis连接问题
  • 日志无法查看问题
  • 多woker不启动问题
  • helm upgrade问题
  • 缓存问题
  • 数据库不存在问题
  • 动态安装依赖问题

其中有些问题,官网写的比较模糊,还是直接根据问题查看源码找到对应配置会快些

1. 新建secret.yaml文件

该文件主要存放git与repo访问秘钥

apiVersion: v1
kind: Secret
metadata:
  name: git-credentials
type: Opaque
data:
  GIT_SYNC_USERNAME: XXXXXXX
  GIT_SYNC_PASSWORD: XXXXXXX
---
apiVersion: v1
kind: Secret
type: kubernetes.io/dockerconfigjson
metadata:
  name: nexus-registry-secret
  namespace: airflow-plus
data:
  ".dockerconfigjson": "XXXXXXX"

部署该文件到命名空间airflow-plus

kubectl apply -f secret.yaml --namespace airflow-plus

2. 新建values.yaml文件

该文件主要进行一些重写工作,可参照源码values.yaml

config:
  core:
    # git上dags所在的目录,配置对即可在webserver中看到dags
    dags_folder: /opt/airflow/dags/repo/dags 
    # 根据ip方式通信,默认hostname域名方式,解决访问worker节点日志无法查看问题
    hostname_callable: airflow.utils.net.get_host_ip_address
    default_timezone: Asia/Shanghai
webserver:
  # 重写args方法,执行airflow webserver前执行airflow db init解决初始化报错问题
  args:
    - "bash"
    - "-c"
    - 
Kubernetes (k8s) 是一个开源的容器编排系统,常用于自动化容器化应用的部署、扩展和管理。要将Apache Airflow部署k8s上,你可以按照以下步骤操作: 1. **安装Kubernetes集群**:确保你有一个运行中的k8s集群,如果没有,可以通过官方文档或服务商提供的服务安装。 2. **创建Docker镜像**:Airflow应该被打包成Docker镜像,包含所有依赖。你可以使用Dockerfile创建一个自定义的镜像。 ```bash # Dockerfile FROM python:3.8-slim-buster COPY requirements.txt ./ RUN pip install --no-cache-dir -r requirements.txt COPY . /app WORKDIR /app EXPOSE 8080 CMD ["airflow", "webserver"] ``` 3. **创建Kubernetes部署文件**(如:`airflow-deployment.yaml`): - 定义Deployment来描述Pod的数量和配置 - 使用Service来暴露应用的端口 ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: airflow-deployment spec: replicas: 1 selector: matchLabels: app: airflow template: metadata: labels: app: airflow spec: containers: - name: airflow image: <your-airflow-docker-image> ports: - containerPort: 8080 --- apiVersion: v1 kind: Service metadata: name: airflow-service spec: selector: app: airflow ports: - protocol: TCP port: 80 targetPort: 8080 type: LoadBalancer ``` 4. **部署k8s**: 使用`kubectl apply -f airflow-deployment.yaml`命令将配置文件应用到集群。 5. **验证和访问**: 查看Pod状态确认部署成功,然后通过Service的外部IP或域名访问Airflow UI。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

算法小生Đ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值