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

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

前言

Apache DolphinScheduler 是一个开源的分布式工作流任务调度系统,具有可视化操作界面、丰富的任务类型支持、高可靠性和高扩展性等特点。本文将详细介绍如何在 Kubernetes 集群上部署 DolphinScheduler,并针对生产环境提供专业建议。

部署方式选择

DolphinScheduler 提供多种部署方式,针对不同场景:

  1. Standalone 模式:适合快速体验和开发测试
  2. 伪集群部署:适合功能完整性和小规模任务验证
  3. 集群部署:适合生产环境使用
  4. Kubernetes 部署:适合云原生环境和大规模任务调度

先决条件

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

  • Helm 3.1.0 或更高版本
  • Kubernetes 1.12 或更高版本集群
  • 持久卷(PV)供应能力
  • 集群管理员权限

部署步骤

1. 基础部署

使用 Helm 进行基础部署:

helm upgrade --install dolphinscheduler \
  --create-namespace \
  --namespace dolphinscheduler \
  oci://registry-1.docker.io/apache/dolphinscheduler-helm \
  --version <指定版本>

此命令将:

  • 创建 dolphinscheduler 命名空间
  • 部署 PostgreSQL 数据库(用户 root/密码 root)
  • 部署 ZooKeeper 服务
  • 部署 DolphinScheduler 所有组件

2. 访问 Web UI

访问方式取决于 Ingress 配置:

方式一:通过 Ingress 访问

  • 确保 values.yaml 中 ingress.enabled=true
  • 访问 http://${ingress.host}/dolphinscheduler

方式二:通过端口转发

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

高级配置

1. 使用 MySQL 替代 PostgreSQL

由于许可原因,需自定义镜像:

  1. 下载 MySQL 驱动
  2. 创建 Dockerfile 添加驱动
  3. 构建并推送自定义镜像
  4. 修改 values.yaml:
    postgresql:
      enabled: false
    externalDatabase:
      type: "mysql"
      host: "mysql-host"
      port: "3306"
      username: "root"
      password: "password"
      database: "dolphinscheduler"
    

2. Worker 自动扩缩容(试验性)

基于 KEDA 实现:

  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"
    
  2. 启用自动扩缩:

    helm upgrade --install dolphinscheduler ... --set worker.keda.enabled=true
    

3. 支持 Python 3

  1. 创建自定义 Worker 镜像:

    FROM apache/dolphinscheduler-worker:<version>
    RUN apt-get update && apt-get install -y python3
    
  2. 修改 values.yaml:

    worker:
      env:
        PYTHON_LAUNCHER: "/usr/bin/python3"
    

4. 支持 Spark/Hadoop

  1. 确保共享存储已启用
  2. 上传 Spark/Hadoop 包到 Worker:
    kubectl cp spark-2.4.7-bin-hadoop2.7.tgz dolphinscheduler-worker-0:/opt/soft
    
  3. 在 Worker 容器内解压并设置环境变量

运维管理

1. 查看日志

kubectl logs dolphinscheduler-master-0 -f

2. 扩缩容组件

扩缩容 API 服务:

kubectl scale --replicas=3 deploy dolphinscheduler-api

扩缩容 Worker:

kubectl scale --replicas=6 sts dolphinscheduler-worker

3. 卸载

卸载 DolphinScheduler:

helm uninstall dolphinscheduler

删除 PVC(谨慎操作):

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

生产建议

  1. 数据库:建议使用外部高可用数据库而非内置 PostgreSQL
  2. 存储:根据业务需求选择合适的存储后端(HDFS/S3/本地文件系统)
  3. 资源分配:根据任务负载合理配置各组件资源限制
  4. 高可用:确保关键组件(master/api)有足够副本
  5. 监控:集成 Prometheus 等监控系统

常见问题解答

Q:如何支持 Oracle 数据源? A:需要构建自定义镜像添加 Oracle JDBC 驱动,步骤类似 MySQL 支持。

Q:Worker 节点如何区分 CPU/GPU 类型? A:可以通过 nodeSelector 将不同 Worker 部署到特定节点:

helm install ... --set worker.nodeSelector.gpu="a100"

Q:如何修改资源上传路径? A:修改 values.yaml 中的 RESOURCE_UPLOAD_PATH 和 FS_DEFAULT_FS 配置。

通过本文介绍,您应该能够在 Kubernetes 环境上成功部署和管理 Apache DolphinScheduler。根据实际业务需求,合理配置各项参数,可以充分发挥 DolphinScheduler 在大规模任务调度方面的优势。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

章雍宇

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

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

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

打赏作者

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

抵扣说明:

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

余额充值