azkaban on kubernetes部署方式 多执行节点支持自动伸缩

  • 使用编译好的azkaban 3.84.4版本建立镜像,镜像通过args参数控制启动exe还是web
  • azkaban的配置文件和用户文件引入configmap,方便修改配置
  • 默认建立1个mysql,1个exe执行节点(statefulset),1个web节点
  • exe节点可以自动激活和反激活,方便进行伸缩管理(这个服务很适合配置为自动动态伸缩,我没有去实现)
  • 密码存入secret文件
  • azkaban节点的数据库连接信息通过ENV环境变量引入
  • 因为我的k8s是单node环境,所以mysql服务的地址直接使用了service-name

限于篇幅,代码这里就不贴了,请移步github查看
https://github.com/justong86/azkaban-on-k8s

建立镜像

cd dockerfile

docker build -t localhost:32000/azkaban:t3 .

docker push localhost:32000/azkaban:t3

按需创建namespace

kubectl apply -f namespace.yaml

MYSQL数据库

  • 修改secret.yaml文件,保存数据库密码
eg. echo -n "123456"| base64
----------------------------------
kubectl apply -f secret.yaml 
  • 创建mysql节点
kubectl apply -f mysql.yaml

以后考虑使用initcontainers来初始化,减少手工操作(需要判断是否已经初始化)

  • 数据库数据初始化
kubectl exec azkaban-mysql-xxxxx-xxxx -n azkaban -it -- mysql -uroot -pmypassword azkaban < create-all-sql-3.84.4.sql

创建executor节点

  • 修改/创建节点配置文件
kubectl apply -f exe-cm.yaml 
  • 创建exe节点
kubectl apply -f exe.yaml 
  • 已经实现exe节点在数据库中的自动激活,以下步骤可以跳过
    通过使用pod生命周期钩子增加自动激活(文件active-exe.sh),和pod关闭前的自动失效

    • 到数据库中查看exe节点注册情况
    • 在数据库中激活exe节点
# 查看节点
kubectl -n azkaban exec pod/azkaban-mysql-6f9b69c478-xlhpt -- mysql -uazkaban -p123456 -e "select * from azkaban.executors"

# 激活节点
kubectl -n azkaban exec pod/azkaban-mysql-6f9b69c478-xlhpt -- mysql -uazkaban -p123456 -e "update azkaban.executors set active=1"

创建web节点

  • 修改/创建节点配置文件
  • 这里请注意users.xml文件的位置,请注意按实际情况修改
kubectl apply -f web-cm.yaml 
  • 创建web节点
kubectl apply -f web.yaml 

登陆访问web ui

kubectl -n azkaban get svc

http://CLUSTER-IP:8081
http://localhost:31081

其他

  • 支持scale命令自动扩展exe节点
kubectl -n azkaban scale statefulset azkaban-exe --replicas=2
  • 新增的节点会自动激活
mysql> select * from executors;
+----+-----------------------------------------------------+-------+--------+
| id | host                                                | port  | active |
+----+-----------------------------------------------------+-------+--------+
|  9 | azkaban-exe-0.azkaban-exe.azkaban.svc.cluster.local | 12321 |      1 |
| 10 | azkaban-exe-1.azkaban-exe.azkaban.svc.cluster.local | 12321 |      1 |
+----+-----------------------------------------------------+-------+--------+
2 rows in set (0.00 sec)

你可能感兴趣的:(运维,大数据)