EasyScheduler在Kubernetes环境下的部署与配置指南

EasyScheduler在Kubernetes环境下的部署与配置指南

dolphinscheduler dolphinscheduler 项目地址: https://gitcode.com/gh_mirrors/ea/EasyScheduler

前言

EasyScheduler(原DolphinScheduler)是一款开源的分布式任务调度系统,具有可视化操作界面、丰富的任务类型支持和高可用特性。本文将详细介绍如何在Kubernetes集群中部署和配置EasyScheduler,帮助用户在生产环境中快速搭建调度平台。

部署准备

在开始部署前,请确保满足以下先决条件:

  1. Kubernetes集群版本1.12+
  2. Helm 3.1.0+版本
  3. 底层基础设施支持PV动态供给
  4. 集群具备足够的计算资源(建议至少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驱动,需要自定义镜像:

  1. 下载MySQL驱动
  2. 创建Dockerfile:
FROM apache/dolphinscheduler-<service>:<version>
COPY mysql-connector-java-8.0.16.jar /opt/dolphinscheduler/libs
  1. 修改values.yaml配置:
postgresql:
  enabled: false
  
externalDatabase:
  type: "mysql"
  host: "mysql-host"
  port: "3306"
  username: "root"
  password: "yourpassword"
  database: "dolphinscheduler"

2. Worker自动扩缩容(实验性功能)

EasyScheduler支持基于KEDA的Worker自动扩缩容:

  1. 安装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"
  1. 启用自动扩缩容:
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环境

  1. 创建自定义Worker镜像:
FROM apache/dolphinscheduler-worker:<version>
RUN apt-get update && apt-get install -y python3 python3-pip
  1. 修改values.yaml:
worker:
  env:
    PYTHON_LAUNCHER: "/usr/bin/python3"

2. 支持Spark/Hadoop等大数据组件

  1. 确保启用共享存储:
common:
  sharedStoragePersistence:
    enabled: true
  1. 将组件包复制到Worker容器:
kubectl cp spark-3.1.2-bin-hadoop3.2.tgz easyscheduler-worker-0:/opt/soft -n easyscheduler
  1. 在容器内解压并设置环境变量

任务类型支持矩阵

| 任务类型 | 支持情况 | 备注 | |----------------|----------|----------------------| | Shell | ✓ | 原生支持 | | Python2/3 | ✓ | 需自定义镜像 | | Spark/YARN | ✓ | 需配置Hadoop环境 | | Flink | △ | 部分模式支持 | | MapReduce | ✓ | 需配置Hadoop环境 | | 各类SQL任务 | ✓ | 需配置对应驱动 | | DataX | ✓ | 需自定义镜像 |

最佳实践建议

  1. 生产环境建议:

    • 使用外部高可用数据库
    • 为Worker配置资源限制
    • 启用Ingress并配置HTTPS
  2. 性能优化:

    • 根据任务量调整Worker数量
    • 为不同类型任务创建专用Worker组
    • 合理配置任务队列
  3. 监控建议:

    • 配置Prometheus监控
    • 收集各组件日志
    • 设置关键指标告警

通过本文介绍的部署方法和配置技巧,您可以在Kubernetes环境中快速搭建一个高可用的EasyScheduler调度平台,满足不同规模的任务调度需求。

dolphinscheduler dolphinscheduler 项目地址: https://gitcode.com/gh_mirrors/ea/EasyScheduler

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郁俪晟Gertrude

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值