Ingen beskrivning

liweiquan fa50ad0d2a 修改airflow apiIsStable 为true 1 år sedan
aihub-dag-dev c286be7be2 remove tls 1 år sedan
aihub-spark c54c996bae fix: nginx ingressclassname 1 år sedan
airflow fa50ad0d2a 修改airflow apiIsStable 为true 1 år sedan
dag f639c05eae fix: replicas 1 år sedan
nfs-client-provisioner 8dfa3d61b6 add nfs 1 år sedan
.gitignore 93413ef191 idctest add hostAliases 1 år sedan
.helmignore 91592096ac first commit 1 år sedan
Makefile a9e118998c add Makefile 1 år sedan
README.md 2cb708109f add backend tls 1 år sedan
config-idcprod 5565998bef origin airflow 1 år sedan
config-idctest 5b8510f7c6 update dag idctest 1 år sedan
config-sxkj 2c462241f6 add txtest 1 år sedan
config-txprod a626a2cbfb add config-txprod 1 år sedan
config-txtest 2c462241f6 add txtest 1 år sedan
git-secret.yaml 2d1a774010 add initcontainer 1 år sedan
helm 8b05d56ad1 add helm 1 år sedan
pvc-test.yaml 8dfa3d61b6 add nfs 1 år sedan
run.py b64fe17fe2 add run1.py 1 år sedan
run1.py b64fe17fe2 add run1.py 1 år sedan
submit.sh 3095d913c9 update submit 1 år sedan

README.md

dag 平台

服务介绍

  • livy: 用于 jupyterlab 跟大数据做交互式编程
  • backend: dag 系统业务后端
  • backendaf: 基于 airflow api 的后端服务
  • helmbe: 用于动态启停 jupyterlab 的服务(密码、host url、jupyterlab 镜像)
  • frontend: 独立版前端
  • airflow 套件 (官方的 helm chart 启动)

部署前期准备

域名

  • aihub-dag.digitalyili.com (前端、后台)
  • aihub-dag-jpt.digitalyili.com (调试 jupyter)
  • aihub-dag-web.digitalyili.com (airflow)

其他

  • mysql dag 系统
  • postgres airflow 系统
  • 大数据环境(hadoop、spark、hive): 腾讯云(hive=2.3.7 hadoop=3.2.3 spark=3.0.3) 电信云(hive=2.1.1 hadoop=3.0.0(cdh6.3.2) spark=2.4.0)
  • hadoop 的配置(core-site.xml、yarn-site.xml、hdfs-site.xml、mapred-site.xml、hive-site.xml) hadoop -> hdfs + mapreduce(spark) + yarn
  • hive 连接、 hadoop 的账号、hdfs 的目录以及权限、yarn 资源队列
  • nfs 用于 k8s 持久化存储(minio-data、jupyter-data0、airflow-dags、airflow-logs)
  • 镜像(livy、jupyterlab、backend、frontend、helmbe、python、java、datax、spark)
  • 网络策略
  • k8s 资源 和配置文件

实际部署

livy + 大数据环境调试

调试 spark 环境:

  1. 打包 spark 镜像
  2. 启动 spark 容器
  3. 配置 spark-evn.sh 、spark-defaults.conf
  4. 调试 spark.pi 提交程序
  5. 调试 pyspark_study/spark-submit_lr.sh 程序

调试 livy

  1. 打包 Livy 镜像
  2. 启动 livy 容器 (31100-31110)
  3. 在 k8s 上启动一个测试的 jupyterlab 测试 livy 环境
  4. 跑通 lr 训练程序
  5. 网络环境(sc)

部署 airflow

  1. 准备 airflow 镜像,官方镜像不支持 k8spodoperator
  2. 准备 airflow helm chart 配置文件
  3. PVC: airflow-dags、 airflow-logs

部署 dag 系统

k8s node

kubectl get node --show-labels
# add label
kubectl label node 10.138.143.25 aihub-dag=aihub-dag
# txtest
kubectl get node --show-labels --kubeconfig config-txtest  | grep  -iv gpu | awk '{print $1}' | xargs -I {} kubectl label node {} aihub-dag=aihub-dag --kubeconfig config-txtest

# txprod
kubectl get node --show-labels --kubeconfig config-txprod  | grep  -iv gpu | awk '{print $1}' | xargs -I {} kubectl label node {} aihub-dag=aihub-dag --kubeconfig config-txprod

# delete label
kubectl label node 10.138.143.25 aihub-dag-


nfs

helm repo add azure http://mirror.azure.cn/kubernetes/charts/

helm search repo nfs-client-provisioner

# idctest

helm install nfs-storage azure/nfs-client-provisioner \
--set nfs.server=100.127.8.85 \
--set nfs.path=/mnt/sfs_perf/41b873b5385a483ab05fe166257f34d1_zwet4mbqr66f3f4c/test-aihub-nas/aihub-dag-idctest \
--set storageClass.name=nfs-storage \
--set storageClass.defaultClass=true

# idcprod

helm upgrade --install nfs-storage azure/nfs-client-provisioner \
--set nfs.server=100.127.8.85 \
--set nfs.path=/mnt/sfs_perf/41b873b5385a483ab05fe166257f34d1_mkv38c6gfkjiudmn/prod-aihub-nas/aihub-dag-prod \
--set storageClass.name=nfs-storage \
--set storageClass.defaultClass=true

部署 livy 和 spark 调试工具

主要用于调试大数据相关的环境和网络策略。

  • spark (调试工具 helm、kubectl、frpc)
  • jupyterlab
  • livy
# sxkj
helm3 upgrade --install  aihub-spark ./aihub-spark -f aihub-spark/values.yaml -n airflow --kubeconfig config-sxkj

# idctest
helm upgrade --install aihub-spark ./aihub-spark -f aihub-spark/values-idctest.yaml -n ns-aihub-dag --kubeconfig config-idctest


# idcprod
helm upgrade --install aihub-spark ./aihub-spark -f aihub-spark/values-idcprod.yaml -n ns-aihub-dag --kubeconfig config-idcprod

部署 airflow

helm upgrade --install airflow ./chart  -f ./values.yaml -n airflow --set defaultAirflowRepository=registry.cn-hangzhou.aliyuncs.com/sxtest/airflow \
--set images.airflow.pollPolicy=Always --set defaultAirflowTag=v1  --create-namespace

# sxkj
cd airflow/origin


helm upgrade --install airflow ./airflow -f values-sxkj.yaml -n airflow --set defaultAirflowRepository=registry.cn-hangzhou.aliyuncs.com/sxtest/airflow \
--set images.airflow.pollPolicy=Always --set defaultAirflowTag=v1 --kubeconfig ../../config-sxkj


# txtest

cd airflow/origin
helm upgrade --install airflow ./airflow -f values-txtest.yaml -n aihub-test --set defaultAirflowRepository=registry.cn-hangzhou.aliyuncs.com/sxtest/airflow --set images.airflow.pollPolicy=Always --set defaultAirflowTag=v1 --kubeconfig ../../config-txtest

# idctest
cd airflow/idctest
helm3 upgrade --install airflow ./chart -f values-idctest.yaml --set defaultAirflowRepository=registry.cn-hangzhou.aliyuncs.com/sxtest/airflow \
--set images.airflow.pollPolicy=Always --set defaultAirflowTag=v1  -n ns-aihub-dag --kubeconfig ../../config-idctest

# idcprod
cd airflow/idctest

helm upgrade --install airflow ./chart -f values-idcprod.yaml --set defaultAirflowRepository=registry.cn-hangzhou.aliyuncs.com/sxtest/airflow \
--set images.airflow.pollPolicy=Always --set defaultAirflowTag=v1 --kubeconfig ../../config-idcprod -n ns-aihub-dag

# txprod
cd airflow/idctest

helm upgrade --install airflow ./chart -f values-txprod.yaml --set defaultAirflowRepository=registry.cn-hangzhou.aliyuncs.com/sxtest/airflow --set defaultAirflowTag=v1 \
--kubeconfig ../../config-txprod -n aihub-prod

部署 aihub-dag 系统

  • minio: 对象存储
  • frontend: 前端
  • backend: 业务后端
  • backendaf: airflow 任务后端
  • helmbe: 启停 jupyterlab
cd dag

# jupyterlab 的所有存储
kubectl apply -f jupyterlab-data-pv.yaml -n airflow

# 在namespace airflow 先部署 airflow
# helm >= 3.2
# 调试
helm template aihub-dag ./  --dry-run --debug -f values.yaml -n airflow

# idctest
helm upgrade --install aihub-dag ./dag   -f dag/values-idctest.yaml -n ns-aihub-dag --kubeconfig config-idctest


# idcprod
helm  upgrade --install aihub-dag ./dag   -f dag/values-idcprod.yaml -n ns-aihub-dag --kubeconfig config-idcprod

# txtest
helm upgrade --install aihub-dag ./dag   -f dag/values-txtest.yaml -n aihub-test --kubeconfig config-txtest


# txprod
helm upgrade --install aihub-dag ./dag   -f dag/values-txprod.yaml -n aihub-prod --kubeconfig config-txprod


# sxkj
helm3  upgrade --install aihub-dag ./dag   -f dag/values-sxkj.yaml -n airflow  --kubeconfig config-sxkj

部署 aihub-dag-dev

用于测试环境调试。

helm upgrade --install aihub-dag-dev ./aihub-dag-dev -f ./aihub-dag-dev/values-txtest.yaml -n aihub-test