K8S部署分布式调度任务Airflow

2025-05-27 0 9

K8S部署分布式调度任务Airflow

一、部署要求

Apache Airflow 已通过以下测试:

K8S部署分布式调度任务Airflow

注意: MySQL 5.x 版本不能或有运行多个调度程序的限制——请参阅调度程序文档。MariaDB 未经过测试/推荐。

注意: SQLite 用于 Airflow 测试。不要在生产中使用它。我们建议使用最新的 SQLite 稳定版本进行本地开发。

PS:本文部署 Airflow 稳定版 2.1.4,Kubernetes使用1.20.x版本,PostgreSQL使用12.x,使用Helm Charts部署。

二、生成Helm Charts配置

PS:使用 helm 3 版本部署

  1. # 创建kubernetes airflow 命名空间
  2. $ kubectl create namespace airflow
  3. # 添加 airflow charts 仓库源
  4. $ helm repo add apache-airflow https://airflow.apache.org
  5. # 更新 aiarflow 源
  6. $ helm repo update
  7. # 查看 airflow charts 所有版本(这里选择部署charts 1.2.0,也就是airflow 2.1.4)
  8. $ helm search repo apache-airflow/airflow -l
  9. NAME CHART VERSION APP VERSION DESCRIPTION
  10. apache-airflow/airflow 1.3.0 2.2.1 The official Helm chart to deploy Apache Airflo…
  11. apache-airflow/airflow 1.2.0 2.1.4 The official Helm chart to deploy Apache Airflo…
  12. apache-airflow/airflow 1.1.0 2.1.2 The official Helm chart to deploy Apache Airflo…
  13. apache-airflow/airflow 1.0.0 2.0.2 Helm chart to deploy Apache Airflow, a platform…
  14. # 导出 airflow charts values.yaml 文件
  15. $ helm show values apache-airflow/airflow –version 1.2.0 > airflow_1.2.4_values.yaml

三、修改airflow配置

3.1 配置持续存储 StorageClass

PS: 使用阿里云NAS极速存储

  1. # 编辑 StorageClass 文件
  2. $ vim alicloud-nas-airflow-test.yaml
  3. apiVersion: storage.k8s.io/v1
  4. kind: StorageClass
  5. metadata:
  6. name: alicloud-nas-airflow-test
  7. mountOptions:
  8. – nolock,tcp,noresvport
  9. – vers=3
  10. parameters:
  11. volumeAs: subpath
  12. server: \”xxxxx.cn-beijing.extreme.nas.aliyuncs.com:/share/airflow/\”
  13. provisioner: nasplugin.csi.alibabacloud.com
  14. reclaimPolicy: Retain
  15. # 应用到K8S中
  16. $ kubectl apply -f alicloud-nas-airflow-test.yaml

3.2 配置 airflow Dags 存储仓库 gitSshKey

  1. # 编辑 airflow-ssh-secret.yaml 文件,首先需要把shh公钥添加到git项目仓库中
  2. $ vim airflow-ssh-secret.yaml
  3. apiVersion: v1
  4. kind: Secret
  5. metadata:
  6. name: airflow-ssh-secret
  7. namespace: airflow
  8. data:
  9. # key needs to be gitSshKey
  10. gitSshKey: \”ssh私钥,base64\”
  11. # 应用到K8S中
  12. $ kubectl apply -f airflow-ssh-secret.yaml

3.3 Docker 部署 PostgreSQL 12

  1. # 创建 postgresql 存储目录
  2. $ mkdir /data/postgresql_data
  3. # 创建启动文件
  4. $ vim docker-compose.yaml
  5. version: \”3\”
  6. services:
  7. airflow-postgres:
  8. image: postgres:12
  9. restart: always
  10. container_name: airflow-postgres
  11. environment:
  12. TZ: Asia/Shanghai
  13. POSTGRES_USER: airflow
  14. POSTGRES_PASSWORD: Airflow123
  15. volumes:
  16. – /data/postgresql_data:/var/lib/postgresql/data
  17. ports:
  18. \”5432:5432\”
  19. # 启动 postgresql docker
  20. $ docker-compose up -d

3.4 修改 airflow_1.2.4_values.yaml 配置

PS:本文 airflow_1.2.4_values.yaml 配置文件需要三个pvc,服务分别是 redis、worker(只部署1个worker,可以部署多个worker)、dags

因配置文件太长,不具体贴出,具体内容请参考下面链接:

https://github.com/yangpeng14/DevOps/blob/master/config_dir/airflow_1.2.4_values.yaml

四、部署 Airfolw

  1. # 第一次部署 Airflow
  2. $ helm install airflow apache-airflow/airflow –namespace airflow –version 1.2.0 -f airflow_1.2.4_values.yaml
  3. # 以后如果要修改airflow配置,请使用下面命令
  4. $ helm upgrade –install airflow apache-airflow/airflow –namespace airflow –version 1.2.0 -f airflow_1.2.4_values.yaml

五、配置 Airflow Ingress Nginx 访问入口

  1. # 生成 ingress nginx 配置文件
  2. $ vim airflow-ingress.yaml
  3. apiVersion: networking.k8s.io/v1
  4. kind: Ingress
  5. metadata:
  6. name: airflow
  7. namespace: airflow
  8. annotations:
  9. kubernetes.io/ingress.class: nginx
  10. nginx.ingress.kubernetes.io/ssl-redirect: \”false\”
  11. nginx.ingress.kubernetes.io/proxy-connect-timeout: \”60\”
  12. nginx.ingress.kubernetes.io/proxy-read-timeout: \”60\”
  13. nginx.ingress.kubernetes.io/proxy-send-timeout: \”60\”
  14. spec:
  15. rules:
  16. – host: \”airflow.example.com\”
  17. http:
  18. paths:
  19. – path: /
  20. pathType: Prefix
  21. backend:
  22. service:
  23. name: airflow-webserver
  24. port:
  25. number: 8080
  26. # 应用到K8S中
  27. $ kubectl apply -f airflow-ingress.yaml

六、参考链接

1、https://github.com/apache/airflow/tree/2.1.4

2、https://airflow.apache.org/docs/helm-chart/1.2.0/index.html

原文链接:https://mp.weixin.qq.com/s/sP-JA8zZq6kDTFUuEr-LHw

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 行业资讯 K8S部署分布式调度任务Airflow https://www.kuaiidc.com/61887.html

相关文章

发表评论
暂无评论