EasyScheduler在Kubernetes环境下的部署与配置指南
前言
EasyScheduler(原DolphinScheduler)是一款开源的分布式任务调度系统,具有可视化操作界面、丰富的任务类型支持和高可用特性。本文将详细介绍如何在Kubernetes集群中部署和配置EasyScheduler,帮助用户在生产环境中快速搭建调度平台。
部署准备
在开始部署前,请确保满足以下先决条件:
- Kubernetes集群版本1.12+
- Helm 3.1.0+版本
- 底层基础设施支持PV动态供给
- 集群具备足够的计算资源(建议至少4核CPU和8GB内存)
基础部署步骤
1. 使用Helm安装EasyScheduler
执行以下命令进行安装:
helm upgrade --install easyscheduler \
--create-namespace \
--namespace easyscheduler \
oci://registry-1.docker.io/apache/dolphinscheduler-helm \
--version <指定版本>
安装完成后,系统会自动创建以下组件:
- PostgreSQL数据库(默认用户root/密码root)
- ZooKeeper服务
- EasyScheduler核心组件(API、Master、Worker等)
2. 访问Web UI
根据不同的服务暴露方式,访问方式有所不同:
Ingress方式(推荐)
如果启用了Ingress,直接访问配置的域名即可:
http://${ingress.host}/dolphinscheduler
NodePort方式
获取访问地址:
NODE_IP=$(kubectl get no -n easyscheduler -o jsonpath="{.items[0].status.addresses[0].address}")
NODE_PORT=$(kubectl get svc easyscheduler-api -n easyscheduler -o jsonpath="{.spec.ports[0].nodePort}")
echo http://$NODE_IP:$NODE_PORT/dolphinscheduler
ClusterIP方式
使用端口转发:
kubectl port-forward --address 0.0.0.0 svc/easyscheduler-api 12345:12345 -n easyscheduler
访问地址:
http://localhost:12345/dolphinscheduler/ui
默认登录凭证:
- 用户名:admin
- 密码:dolphinscheduler123
高级配置
1. 使用MySQL替代PostgreSQL
由于许可限制,默认镜像不包含MySQL驱动,需要自定义镜像:
- 下载MySQL驱动
- 创建Dockerfile:
FROM apache/dolphinscheduler-<service>:<version>
COPY mysql-connector-java-8.0.16.jar /opt/dolphinscheduler/libs
- 修改values.yaml配置:
postgresql:
enabled: false
externalDatabase:
type: "mysql"
host: "mysql-host"
port: "3306"
username: "root"
password: "yourpassword"
database: "dolphinscheduler"
2. Worker自动扩缩容(实验性功能)
EasyScheduler支持基于KEDA的Worker自动扩缩容:
- 安装KEDA:
helm repo add kedacore https://kedacore.github.io/charts
kubectl create namespace keda
helm install keda kedacore/keda --namespace keda --version "v2.0.0"
- 启用自动扩缩容:
helm upgrade --install easyscheduler ... --set worker.keda.enabled=true
运维管理
1. 查看日志
# 查看Master日志
kubectl logs easyscheduler-master-0 -n easyscheduler
# 实时查看Worker日志
kubectl logs -f easyscheduler-worker-0 -n easyscheduler
2. 扩缩容组件
# 扩容API节点
kubectl scale --replicas=3 deploy easyscheduler-api -n easyscheduler
# 扩容Worker节点
kubectl scale --replicas=5 sts easyscheduler-worker -n easyscheduler
3. 卸载EasyScheduler
# 卸载Release
helm uninstall easyscheduler -n easyscheduler
# 删除PVC(谨慎操作,会删除所有数据)
kubectl delete pvc -l app.kubernetes.io/instance=easyscheduler -n easyscheduler
常见问题解决方案
1. 支持Python3环境
- 创建自定义Worker镜像:
FROM apache/dolphinscheduler-worker:<version>
RUN apt-get update && apt-get install -y python3 python3-pip
- 修改values.yaml:
worker:
env:
PYTHON_LAUNCHER: "/usr/bin/python3"
2. 支持Spark/Hadoop等大数据组件
- 确保启用共享存储:
common:
sharedStoragePersistence:
enabled: true
- 将组件包复制到Worker容器:
kubectl cp spark-3.1.2-bin-hadoop3.2.tgz easyscheduler-worker-0:/opt/soft -n easyscheduler
- 在容器内解压并设置环境变量
任务类型支持矩阵
| 任务类型 | 支持情况 | 备注 | |----------------|----------|----------------------| | Shell | ✓ | 原生支持 | | Python2/3 | ✓ | 需自定义镜像 | | Spark/YARN | ✓ | 需配置Hadoop环境 | | Flink | △ | 部分模式支持 | | MapReduce | ✓ | 需配置Hadoop环境 | | 各类SQL任务 | ✓ | 需配置对应驱动 | | DataX | ✓ | 需自定义镜像 |
最佳实践建议
-
生产环境建议:
- 使用外部高可用数据库
- 为Worker配置资源限制
- 启用Ingress并配置HTTPS
-
性能优化:
- 根据任务量调整Worker数量
- 为不同类型任务创建专用Worker组
- 合理配置任务队列
-
监控建议:
- 配置Prometheus监控
- 收集各组件日志
- 设置关键指标告警
通过本文介绍的部署方法和配置技巧,您可以在Kubernetes环境中快速搭建一个高可用的EasyScheduler调度平台,满足不同规模的任务调度需求。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考