Apache DolphinScheduler 在 Kubernetes 上的部署与配置指南
前言
Apache DolphinScheduler 是一个分布式易扩展的可视化工作流任务调度系统,本文将详细介绍如何在 Kubernetes 集群中部署和配置 DolphinScheduler。通过 Kubernetes 部署可以实现高可用、弹性伸缩等生产级特性,适合大规模任务调度场景。
部署前准备
在开始部署前,请确保您的环境满足以下要求:
- Helm 3.1.0+:Kubernetes 的包管理工具
- Kubernetes 1.12+:容器编排平台
- PV 存储支持:底层基础设施需要支持持久卷(PV)的自动供应
部署步骤
基础部署
使用 Helm 命令一键部署 DolphinScheduler:
helm upgrade --install dolphinscheduler \
--create-namespace \
--namespace dolphinscheduler \
oci://registry-1.docker.io/apache/dolphinscheduler-helm \
--version <指定版本>
此命令会在 Kubernetes 集群中部署 DolphinScheduler,默认包含以下组件:
- PostgreSQL 数据库(用户名/密码:root/root)
- ZooKeeper 服务
- DolphinScheduler 各服务组件
访问 UI 界面
根据不同的服务暴露方式,有以下几种访问方式:
-
Ingress 方式:
- 确保
values.yaml中ingress.enabled=true - 访问
http://${ingress.host}/dolphinscheduler
- 确保
-
ClusterIP + Port-forward:
kubectl port-forward --address 0.0.0.0 svc/dolphinscheduler-api 12345:12345访问
http://localhost:12345/dolphinscheduler/ui -
NodePort 方式:
NODE_IP=$(kubectl get no -n dolphinscheduler -o jsonpath="{.items[0].status.addresses[0].address}") NODE_PORT=$(kubectl get svc dolphinscheduler-api -n dolphinscheduler -o jsonpath="{.spec.ports[0].nodePort}") echo http://$NODE_IP:$NODE_PORT/dolphinscheduler
默认登录凭证:
- 用户名:admin
- 密码:dolphinscheduler123
高级配置
扩缩容管理
在 Kubernetes 中,可以方便地对各组件进行扩缩容:
# 扩缩容 API 服务
kubectl scale --replicas=3 deploy dolphinscheduler-api
# 扩缩容 Master 服务
kubectl scale --replicas=2 sts dolphinscheduler-master
# 扩缩容 Worker 服务
kubectl scale --replicas=6 sts dolphinscheduler-worker
自动扩缩容(实验性功能)
DolphinScheduler 支持基于 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"
- 启用 Worker 自动扩缩容:
helm upgrade --install dolphinscheduler \
--set worker.keda.enabled=true \
...其他参数...
启用后,Worker 数量会根据任务负载在 minReplicaCount 和 maxReplicaCount 之间自动调整。
数据库配置
使用 MySQL 替代 PostgreSQL
默认使用 PostgreSQL,如需切换为 MySQL:
- 构建包含 MySQL 驱动的新镜像:
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: "password"
database: "dolphinscheduler"
功能支持矩阵
| 任务类型 | 支持情况 | 备注 |
|---|---|---|
| Shell | 完全支持 | |
| Python2/3 | 支持 | 需额外配置 |
| Hadoop/Spark | 间接支持 | 需手动安装相关组件 |
| Flink | 部分支持 | 某些模式尚未支持 |
| 各种SQL类型 | 视数据库而定 | MySQL/Oracle需额外驱动 |
| DataX/Sqoop | 间接支持 | 需手动配置 |
常见问题解答
如何查看 Pod 日志?
kubectl logs dolphinscheduler-master-0
kubectl logs -f dolphinscheduler-worker-0 # 实时跟踪日志
如何支持 Python3?
- 构建包含 Python3 的 Worker 镜像:
FROM apache/dolphinscheduler-worker:<version>
RUN apt-get update && apt-get install -y python3
- 修改
values.yaml:
worker:
image:
repository: apache/dolphinscheduler-worker
tag: python3
env:
PYTHON_LAUNCHER: "/usr/bin/python3"
如何支持 Hadoop/Spark 等大数据组件?
以 Spark 为例:
- 确保启用共享存储:
common:
sharedStoragePersistence:
enabled: true
- 将 Spark 二进制包复制到 Worker:
kubectl cp spark-2.4.7-bin-hadoop2.7.tgz dolphinscheduler-worker-0:/opt/soft
- 在容器内解压并设置环境变量
卸载与清理
卸载 DolphinScheduler:
helm uninstall dolphinscheduler
删除相关 PVC(注意会删除所有数据):
kubectl delete pvc -l app.kubernetes.io/instance=dolphinscheduler
总结
本文详细介绍了在 Kubernetes 上部署 Apache DolphinScheduler 的完整流程,包括基础部署、高级配置、数据库定制、功能扩展以及常见问题解决方案。通过 Kubernetes 部署可以充分发挥 DolphinScheduler 的分布式优势,实现高可用、弹性伸缩等企业级特性。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



