栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 前沿技术 > 云计算 > Docker/k8s

K8S部署分布式调度任务Airflow

Docker/k8s 更新时间:发布时间: 百科书网 趣学号



一、部署要求

Apache 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 命名空间 $ kubectl create namespace airflow 
  2.  # 添加 airflow charts 仓库源 
  3. $ helm repo add apache-airflow https://airflow.apache.org  
  4. # 更新 aiarflow 源 $ helm repo update 
  5.  # 查看 airflow charts 所有版本(这里选择部署charts 1.2.0,也就是airflow 2.1.4) 
  6. $ helm search repo apache-airflow/airflow -l  
  7. NAME                    CHART VERSION   APP VERSION DEscriptION apache-airflow/airflow  1.3.0           2.2.1       The official Helm chart to deploy Apache Airflo... 
  8. apache-airflow/airflow  1.2.0           2.1.4       The official Helm chart to deploy Apache Airflo... apache-airflow/airflow  1.1.0           2.1.2       The official Helm chart to deploy Apache Airflo... 
  9. apache-airflow/airflow  1.0.0           2.0.2       Helm chart to deploy Apache Airflow, a platform...  
  10. # 导出 airflow charts values.yaml 文件 $ helm show values apache-airflow/airflow --version 1.2.0 > airflow_1.2.4_values.yaml 
三、修改airflow配置 3.1 配置持续存储 StorageClass

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

  1. # 编辑 StorageClass 文件 $ vim alicloud-nas-airflow-test.yaml 
  2.  apiVersion: storage.k8s.io/v1 
  3. kind: StorageClass metadata: 
  4.   name: alicloud-nas-airflow-test mountOptions: 
  5.   - nolock,tcp,noresvport   - vers=3 
  6. parameters:   volumeAs: subpath 
  7.   server: "xxxxx.cn-beijing.extreme.nas.aliyuncs.com:/share/airflow/" provisioner: nasplugin.csi.alibabacloud.com 
  8. reclaimPolicy: Retain  
  9. # 应用到K8S中 $ kubectl apply -f alicloud-nas-airflow-test.yaml 
3.2 配置 airflow Dags 存储仓库 gitSshKey
  1. # 编辑 airflow-ssh-secret.yaml 文件,首先需要把shh公钥添加到git项目仓库中 $ vim airflow-ssh-secret.yaml 
  2.  apiVersion: v1 
  3. kind: Secret metadata: 
  4.   name: airflow-ssh-secret   namespace: airflow 
  5. data:   # key needs to be gitSshKey 
  6.   gitSshKey: "ssh私钥,base64"  
  7. # 应用到K8S中 $ kubectl apply -f airflow-ssh-secret.yaml 
3.3 Docker 部署 PostgreSQL 12
  1. # 创建 postgresql 存储目录 $ mkdir /data/postgresql_data 
  2.  # 创建启动文件 
  3. $ vim docker-compose.yaml  
  4. version: "3"  
  5. services:   airflow-postgres: 
  6.     image: postgres:12     restart: always 
  7.     container_name: airflow-postgres     environment: 
  8.       TZ: Asia/Shanghai       POSTGRES_USER: airflow 
  9.       POSTGRES_PASSWORD: Airflow123     volumes: 
  10.       - /data/postgresql_data:/var/lib/postgresql/data     ports: 
  11.       - "5432:5432"  
  12. # 启动 postgresql docker $ 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 $ helm install airflow apache-airflow/airflow --namespace airflow --version 1.2.0 -f airflow_1.2.4_values.yaml 
  2.  # 以后如果要修改airflow配置,请使用下面命令 
  3. $ 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 配置文件 $ vim airflow-ingress.yaml 
  2.  apiVersion: networking.k8s.io/v1 
  3. kind: Ingress metadata: 
  4.   name: airflow   namespace: airflow 
  5.   annotations:     kubernetes.io/ingress.class: nginx 
  6.     nginx.ingress.kubernetes.io/ssl-redirect: "false"     nginx.ingress.kubernetes.io/proxy-connect-timeout: "60" 
  7.     nginx.ingress.kubernetes.io/proxy-read-timeout: "60"     nginx.ingress.kubernetes.io/proxy-send-timeout: "60" 
  8. spec:   rules: 
  9.   - host: "airflow.example.com"     http: 
  10.       paths:       - path: / 
  11.         pathType: Prefix         backend: 
  12.           service:             name: airflow-webserver 
  13.             port:               number: 8080 
  14.  # 应用到K8S中 
  15. $ 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

 

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/796704.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号