Apache DolphinScheduler 在 Kubernetes 上的部署与配置指南

Apache DolphinScheduler 在 Kubernetes 上的部署与配置指南

【免费下载链接】dolphinscheduler Dolphinscheduler是一个分布式调度系统,主要用于任务调度和流程编排。它的特点是易用性高、可扩展性强、性能稳定等。适用于任务调度和流程自动化场景。 【免费下载链接】dolphinscheduler 项目地址: https://gitcode.com/GitHub_Trending/dol/dolphinscheduler

前言

Apache DolphinScheduler 是一个分布式易扩展的可视化工作流任务调度系统,本文将详细介绍如何在 Kubernetes 集群中部署和配置 DolphinScheduler。通过 Kubernetes 部署可以实现高可用、弹性伸缩等生产级特性,适合大规模任务调度场景。

部署前准备

在开始部署前,请确保您的环境满足以下要求:

  1. Helm 3.1.0+:Kubernetes 的包管理工具
  2. Kubernetes 1.12+:容器编排平台
  3. 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 界面

根据不同的服务暴露方式,有以下几种访问方式:

  1. Ingress 方式

    • 确保 values.yamlingress.enabled=true
    • 访问 http://${ingress.host}/dolphinscheduler
  2. ClusterIP + Port-forward

    kubectl port-forward --address 0.0.0.0 svc/dolphinscheduler-api 12345:12345
    

    访问 http://localhost:12345/dolphinscheduler/ui

  3. 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 自动扩缩容:

  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. 启用 Worker 自动扩缩容:
helm upgrade --install dolphinscheduler \
  --set worker.keda.enabled=true \
  ...其他参数...

启用后,Worker 数量会根据任务负载在 minReplicaCountmaxReplicaCount 之间自动调整。

数据库配置

使用 MySQL 替代 PostgreSQL

默认使用 PostgreSQL,如需切换为 MySQL:

  1. 构建包含 MySQL 驱动的新镜像:
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: "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?

  1. 构建包含 Python3 的 Worker 镜像:
FROM apache/dolphinscheduler-worker:<version>
RUN apt-get update && apt-get install -y python3
  1. 修改 values.yaml
worker:
  image:
    repository: apache/dolphinscheduler-worker
    tag: python3
  env:
    PYTHON_LAUNCHER: "/usr/bin/python3"

如何支持 Hadoop/Spark 等大数据组件?

以 Spark 为例:

  1. 确保启用共享存储:
common:
  sharedStoragePersistence:
    enabled: true
  1. 将 Spark 二进制包复制到 Worker:
kubectl cp spark-2.4.7-bin-hadoop2.7.tgz dolphinscheduler-worker-0:/opt/soft
  1. 在容器内解压并设置环境变量

卸载与清理

卸载 DolphinScheduler:

helm uninstall dolphinscheduler

删除相关 PVC(注意会删除所有数据):

kubectl delete pvc -l app.kubernetes.io/instance=dolphinscheduler

总结

本文详细介绍了在 Kubernetes 上部署 Apache DolphinScheduler 的完整流程,包括基础部署、高级配置、数据库定制、功能扩展以及常见问题解决方案。通过 Kubernetes 部署可以充分发挥 DolphinScheduler 的分布式优势,实现高可用、弹性伸缩等企业级特性。

【免费下载链接】dolphinscheduler Dolphinscheduler是一个分布式调度系统,主要用于任务调度和流程编排。它的特点是易用性高、可扩展性强、性能稳定等。适用于任务调度和流程自动化场景。 【免费下载链接】dolphinscheduler 项目地址: https://gitcode.com/GitHub_Trending/dol/dolphinscheduler

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

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

抵扣说明:

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

余额充值