本文部署 Airflow 稳定版 2.1.4,Kubernetes使用1.20.x版本,PostgreSQL使用12.x,使用Helm Charts部署。
一、部署要求
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 版本部署
- #创建kubernetesairflow命名空间
- $kubectlcreatenamespaceairflow
- #添加airflowcharts仓库源
- $helmrepoaddapache-airflowhttps://airflow.apache.org
- #更新aiarflow源
- $helmrepoupdate
- #查看airflowcharts所有版本(这里选择部署charts1.2.0,也就是airflow2.1.4)
- $helmsearchrepoapache-airflow/airflow-l
- NAMECHARTVERSIONAPPVERSIONDESCRIPTION
- apache-airflow/airflow1.3.02.2.1TheofficialHelmcharttodeployApacheAirflo...
- apache-airflow/airflow1.2.02.1.4TheofficialHelmcharttodeployApacheAirflo...
- apache-airflow/airflow1.1.02.1.2TheofficialHelmcharttodeployApacheAirflo...
- apache-airflow/airflow1.0.02.0.2HelmcharttodeployApacheAirflow,aplatform...
- #导出airflowchartsvalues.yaml文件
- $helmshowvaluesapache-airflow/airflow--version1.2.0>airflow_1.2.4_values.yaml
三、修改Airflow配置
3.1 配置持续存储 StorageClass
PS: 使用阿里云NAS极速存储
- #编辑StorageClass文件
- $vimalicloud-nas-airflow-test.yaml
- apiVersion:storage.k8s.io/v1
- kind:StorageClass
- metadata:
- name:alicloud-nas-airflow-test
- mountOptions:
- -nolock,tcp,noresvport
- -vers=3
- parameters:
- volumeAs:subpath
- server:"xxxxx.cn-beijing.extreme.nas.aliyuncs.com:/share/airflow/"
- provisioner:nasplugin.csi.alibabacloud.com
- reclaimPolicy:Retain
- #应用到K8S中
- $kubectlapply-falicloud-nas-airflow-test.yaml
3.2 配置 airflow Dags 存储仓库 gitSshKey
- #编辑airflow-ssh-secret.yaml文件,首先需要把shh公钥添加到git项目仓库中
- $vimairflow-ssh-secret.yaml
- apiVersion:v1
- kind:Secret
- metadata:
- name:airflow-ssh-secret
- namespace:airflow
- data:
- #keyneedstobegitSshKey
- gitSshKey:"ssh私钥,base64"
- #应用到K8S中
- $kubectlapply-fairflow-ssh-secret.yaml
3.3 Docker 部署 PostgreSQL 12
- #创建postgresql存储目录
- $mkdir/data/postgresql_data
- #创建启动文件
- $vimdocker-compose.yaml
- version:"3"
- services:
- airflow-postgres:
- image:postgres:12
- restart:always
- container_name:airflow-postgres
- environment:
- TZ:Asia/Shanghai
- POSTGRES_USER:airflow
- POSTGRES_PASSWORD:Airflow123
- volumes:
- -/data/postgresql_data:/var/lib/postgresql/data
- ports:
- -"5432:5432"
- #启动postgresqldocker
- $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
- #第一次部署Airflow
- $helminstallairflowapache-airflow/airflow--namespaceairflow--version1.2.0-fairflow_1.2.4_values.yaml
- #以后如果要修改airflow配置,请使用下面命令
- $helmupgrade--installairflowapache-airflow/airflow--namespaceairflow--version1.2.0-fairflow_1.2.4_values.yaml
五、配置 Airflow Ingress Nginx 访问入口
- #生成ingressnginx配置文件
- $vimairflow-ingress.yaml
- apiVersion:networking.k8s.io/v1
- kind:Ingress
- metadata:
- name:airflow
- namespace:airflow
- annotations:
- kubernetes.io/ingress.class:nginx
- nginx.ingress.kubernetes.io/ssl-redirect:"false"
- nginx.ingress.kubernetes.io/proxy-connect-timeout:"60"
- nginx.ingress.kubernetes.io/proxy-read-timeout:"60"
- nginx.ingress.kubernetes.io/proxy-send-timeout:"60"
- spec:
- rules:
- -host:"airflow.example.com"
- http:
- paths:
- -path:/
- pathType:Prefix
- backend:
- service:
- name:airflow-webserver
- port:
- number:8080
- #应用到K8S中
- $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集群部署步骤)
知优网 » K8S部署分布式调度任务Airflow(k8s集群部署步骤)