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

 K8S部署分布式调度任务Airflow(k8s集群部署步骤) K8S Kubernetes Airflow 第1张

一、部署要求

Apache Airflow 已通过以下测试:

 K8S部署分布式调度任务Airflow(k8s集群部署步骤) K8S Kubernetes Airflow 第2张

注意: 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. #创建kubernetesairflow命名空间
  2. $kubectlcreatenamespaceairflow
  3. #添加airflowcharts仓库源
  4. $helmrepoaddapache-airflowhttps://airflow.apache.org
  5. #更新aiarflow源
  6. $helmrepoupdate
  7. #查看airflowcharts所有版本(这里选择部署charts1.2.0,也就是airflow2.1.4)
  8. $helmsearchrepoapache-airflow/airflow-l
  9. NAMECHARTVERSIONAPPVERSIONDESCRIPTION
  10. apache-airflow/airflow1.3.02.2.1TheofficialHelmcharttodeployApacheAirflo...
  11. apache-airflow/airflow1.2.02.1.4TheofficialHelmcharttodeployApacheAirflo...
  12. apache-airflow/airflow1.1.02.1.2TheofficialHelmcharttodeployApacheAirflo...
  13. apache-airflow/airflow1.0.02.0.2HelmcharttodeployApacheAirflow,aplatform...
  14. #导出airflowchartsvalues.yaml文件
  15. $helmshowvaluesapache-airflow/airflow--version1.2.0>airflow_1.2.4_values.yaml

三、修改Airflow配置

3.1 配置持续存储 StorageClass

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

  1. #编辑StorageClass文件
  2. $vimalicloud-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. $kubectlapply-falicloud-nas-airflow-test.yaml

3.2 配置 airflow Dags 存储仓库 gitSshKey

  1. #编辑airflow-ssh-secret.yaml文件,首先需要把shh公钥添加到git项目仓库中
  2. $vimairflow-ssh-secret.yaml
  3. apiVersion:v1
  4. kind:Secret
  5. metadata:
  6. name:airflow-ssh-secret
  7. namespace:airflow
  8. data:
  9. #keyneedstobegitSshKey
  10. gitSshKey:"ssh私钥,base64"
  11. #应用到K8S中
  12. $kubectlapply-fairflow-ssh-secret.yaml

3.3 Docker 部署 PostgreSQL 12

  1. #创建postgresql存储目录
  2. $mkdir/data/postgresql_data
  3. #创建启动文件
  4. $vimdocker-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. #启动postgresqldocker
  20. $docker-composeup-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. $helminstallairflowapache-airflow/airflow--namespaceairflow--version1.2.0-fairflow_1.2.4_values.yaml
  3. #以后如果要修改airflow配置,请使用下面命令
  4. $helmupgrade--installairflowapache-airflow/airflow--namespaceairflow--version1.2.0-fairflow_1.2.4_values.yaml

五、配置 Airflow Ingress Nginx 访问入口

  1. #生成ingressnginx配置文件
  2. $vimairflow-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. $kubectlapply-fairflow-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

转载请说明出处
知优网 » K8S部署分布式调度任务Airflow(k8s集群部署步骤)

发表评论

您需要后才能发表评论