DolphinScheduler 在 KubeSphere 平台部署指南
概述
DolphinScheduler 是一个分布式易扩展的可视化 DAG 工作流任务调度系统,致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用。本文档将详细介绍如何在 KubeSphere 平台中通过 YAML 文件部署 DolphinScheduler,使用外部 PostgreSQL 数据库和 NFS 本地映射存储方案。
目录
- 环境准备
- 1.1 KubeSphere 平台要求
- 1.2 必需组件启用
- 1.3 创建企业空间和项目
- 1.4 配置 NFS 动态供应存储类
- 外部数据库准备
- 通过 YAML 文件部署 DolphinScheduler
- 3.1 部署准备
- 3.2 镜像源配置
- 3.3 创建部署文件
- 3.4 ZooKeeper 存储和部署
- 3.5 DolphinScheduler Master 部署
- 3.6 DolphinScheduler Worker 部署
- 3.7 DolphinScheduler API 部署
- 3.8 DolphinScheduler Alert 部署
- 网络配置
- 4.1 创建 Ingress
- 部署验证与访问
- 5.1 检查服务状态
- 5.2 访问 DolphinScheduler Web 界面
- 5.3 功能验证
1. 环境准备
1.1 KubeSphere 平台要求
- KubeSphere 版本: 3.3.0+
- Kubernetes 版本: 1.20+
- 节点 配置: 至少 3 个节点,每个节点最少 2 核 4GB 内存
1.2 必需组件启用
登录 KubeSphere 控制台,确保以下组件已启用:
1.3 创建企业空间和项目
创建企业空间
- 登录KubeSphere控制台
- 进入企业空间
- 点击创建,填写以下信息:
- 企业空间名称:
dolphinscheduler-workspace
- 别名:
DolphinScheduler工作空间
- 描述:
DolphinScheduler分布式任务调度系统
- 企业空间名称:
创建项目
- 进入刚创建的企业空间
- 点击项目 → 创建
- 填写项目信息:
- 项目名称:
dolphinscheduler
- 别名:
DolphinScheduler
- 描述:
DolphinScheduler部署项目
- 项目名称:
1.4 配置 NFS 动态供应存储类
请集群管理员在集群管理界面中创建以下完整配置:
- 进入集群管理 → 应用负载 → 工作负载 → 部署
- 点击创建 → 通过YAML创建
- 复制以下完整配置并一次性创建:
# 创建存储类
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: nfs-storage
annotations:
storageclass.kubernetes.io/is-default-class: "true"
provisioner: k8s-sigs.io/nfs-subdir-external-provisioner
parameters:
archiveOnDelete: "true" # 删除pv的时候,pv的内容是否要备份
---
# 创建DolphinScheduler专用存储类(使用相同的NFS服务器和路径)
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: dolphinscheduler-nfs-storage
annotations:
storageclass.kubernetes.io/is-default-class: "false" # 不设为默认,避免冲突
provisioner: k8s-sigs.io/nfs-subdir-external-provisioner
parameters:
archiveOnDelete: "true" # 删除pv的时候,pv的内容是否要备份
# 指定特定的路径模式,直接使用命名空间和PVC名称,不再添加dolphinscheduler前缀
# 这样数据将直接存储在/NFSData/${.PVC.namespace}/${.PVC.name}路径下
pathPattern: "${.PVC.namespace}/${.PVC.name}"
---
# 部署NFS Subdir External Provisioner
apiVersion: apps/v1
kind: Deployment
metadata:
name: nfs-client-provisioner
labels:
app: nfs-client-provisioner
# 部署在default命名空间
namespace: default
spec:
replicas: 1
strategy:
type: Recreate
selector:
matchLabels:
app: nfs-client-provisioner
template:
metadata:
labels:
app: nfs-client-provisioner
spec:
serviceAccountName: nfs-client-provisioner
containers:
- name: nfs-client-provisioner
image: registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/nfs-subdir-external-provisioner:v4.0.2
# resources:
# limits:
# cpu: 10m
# requests:
# cpu: 10m
volumeMounts:
- name: nfs-client-root
mountPath: /persistentvolumes
env:
- name: PROVISIONER_NAME
value: k8s-sigs.io/nfs-subdir-external-provisioner
- name: NFS_SERVER
value: 192.168.100.5 # 指定自己nfs服务器地址
- name: NFS_PATH
value: /NFSData # nfs服务器共享的目录
volumes:
- name: nfs-client-root
nfs:
server: 192.168.100.5
path: /NFSData
---
# 创建ServiceAccount
apiVersion: v1
kind: ServiceAccount
metadata:
name: nfs-client-provisioner
# 部署在default命名空间
namespace: default
---
# 创建ClusterRole
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: nfs-client-provisioner-runner
rules:
- apiGroups: [""]
resources: ["nodes"]
verbs: ["get", "list", "watch"]
- apiGroups: [""]
resources: ["persistentvolumes"]
verbs: ["get", "list", "watch", "create", "delete"]
- apiGroups: [""]
resources: ["persistentvolumeclaims"]
verbs: ["get", "list", "watch", "update"]
- apiGroups: ["storage.k8s.io"]
resources: ["storageclasses"]
verbs: ["get", "list", "watch"]
- apiGroups: [""]
resources: ["events"]
verbs: ["create", "update", "patch"]
---
# 创建ClusterRoleBinding
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: run-nfs-client-provisioner
subjects:
- kind: ServiceAccount
name: nfs-client-provisioner
# 部署在default命名空间
namespace: default
roleRef:
kind: ClusterRole
name: nfs-client-provisioner-runner
apiGroup: rbac.authorization.k8s.io
---
# 创建Role(用于leader选举)
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: leader-locking-nfs-client-provisioner
# 部署在default命名空间
namespace: default
rules:
- apiGroups: [""]
resources: ["endpoints"]
verbs: ["get", "list", "watch", "create", "update", "patch"]
---
# 创建RoleBinding(用于leader选举)
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: leader-locking-nfs-client-provisioner
# 部署在default命名空间
namespace: default
subjects:
- kind: ServiceAccount
name: nfs-client-provisioner
# 部署在default命名空间
namespace: default
roleRef:
kind: Role
name: leader-locking-nfs-client-provisioner
apiGroup: rbac.authorization.k8s.io
重要配置说明:
-
默认存储类:
- 名称:
nfs-storage
(设置为默认存储类) - 用途: 用于集群中的一般存储需求
- 路径模式: 默认路径模式,直接在NFS根目录下创建子目录
- 名称:
-
DolphinScheduler专用存储类:
- 名称:
dolphinscheduler-nfs-storage
- 用途: 专门用于DolphinScheduler组件的存储需求
- 路径模式: 将所有PVC存储在NFS服务器的
dolphinscheduler
子目录下,便于管理
- 名称:
-
共同配置:
- NFS服务器:
192.168.100.5
(请替换为您的实际NFS服务器IP) - NFS路径:
/NFSData
(请替换为您的实际NFS共享路径) - 镜像源: 使用阿里云镜像源以提高下载速度
- 命名空间: Provisioner部署在
default
命名空间中 - 备份策略:
archiveOnDelete: "true"
表示删除PVC时会备份数据
- NFS服务器:
存储类使用说明:
- 两个存储类使用相同的NFS服务器和路径,但有不同的路径模式和用途
- 在PVC配置中通过
storageClassName
字段指定要使用的存储类 - 如果不指定存储类,将默认使用
nfs-storage
- 为避免混淆,建议在DolphinScheduler相关的PVC中明确指定
dolphinscheduler-nfs-storage
第四步:验证部署
- 检查Provisioner状态:
# 检查Provisioner Pod状态
kubectl get pods -n kube-system | grep nfs-subdir-external-provisioner
# 查看Provisioner日志
kubectl logs -n kube-system deployment/nfs-subdir-external-provisioner
- 检查存储类状态:
# 查看所有存储类
kubectl get storageclass
# 查看默认存储类详情
kubectl describe storageclass nfs-storage
# 查看DolphinScheduler专用存储类详情
kubectl describe storageclass dolphinscheduler-nfs-storage
验证部署
- 检查Provisioner状态:
# 检查Provisioner Pod状态
kubectl get pods -n default | grep nfs-client-provisioner
# 查看Provisioner日志
kubectl logs -n default deployment/nfs-client-provisioner
- 检查存储类状态:
# 查看存储类
kubectl get storageclass nfs-storage
# 查看存储类详情
kubectl describe storageclass nfs-storage
1.4.2 配置说明
环境变量说明
- PROVISIONER_NAME: 必须与StorageClass中的provisioner字段匹配
- NFS_SERVER: NFS服务器的IP地址
- NFS_PATH: NFS服务器上的共享路径
存储类参数说明
- archiveOnDelete:
"false"
: 删除PVC时直接删除数据目录"true"
: 删除PVC时将目录重命名为archived-xxx格式保留
- pathPattern: 目录命名模式
"${.PVC.namespace}/${.PVC.name}"
: 按命名空间和PVC名称创建目录"${.PVC.name}"
: 仅使用PVC名称创建目录
目录结构示例
使用上述配置,当创建名为zookeeper-pvc
的PVC时,会在NFS服务器上自动创建:
/NFSData/
└── dolphinscheduler/ # 命名空间名称
└── zookeeper-pvc/ # PVC名称
└── (ZooKeeper数据文件)
说明:由于修改了pathPattern为${.PVC.namespace}/${.PVC.name}
,数据将直接存储在NFS服务器的/NFSData/dolphinscheduler/zookeeper-pvc/
目录下,而不是/NFSData/dolphinscheduler/dolphinscheduler/zookeeper-pvc/
目录下。
2. 外部数据库准备
2.1 外部 PostgreSQL 数据库信息
本部署方案使用外部 PostgreSQL 数据库,无需在 Kubernetes 中部署 PostgreSQL。
外部数据库信息:
- 数据库地址: 使用 Secret 中的 database-host 和 database-port
- 数据库名称: 使用 Secret 中的 database-name
- 用户名: 使用 Secret 中的 database-username
- 密码: 使用 Secret 中的 database-password
重要说明: 由于使用外部 PostgreSQL 数据库,不需要在 Kubernetes 集群中部署 PostgreSQL 容器。请确保外部数据库服务正常运行且网络连通。
# 创建Secret存储敏感信息
kind: Secret
apiVersion: v1
metadata:
name: dolphinscheduler-secrets
namespace: dolphinscheduler
type: Opaque
data:
# 以下是Base64编码的值,实际部署时请替换为您自己的值
admin-password: ZG9scGhpbnNjaGVkdWxlcjEyMw== # dolphinscheduler123
database-host: cG9zdGdyZXNxbC5leGFtcGxlLmNvbQ== # postgresql.example.com
database-port: NTQzMg== # 5432
database-name: ZG9scGhpbnNjaGVkdWxlcg== # dolphinscheduler
database-username: ZG9scGhpbnNjaGVkdWxlcg== # dolphinscheduler
database-password: ZG9scGhpbnNjaGVkdWxlcjEyMw== # dolphinscheduler123
生成Base64编码值的方法:
# Linux/Mac
echo -n "要编码的值" | base64
# Windows PowerShell
[Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("要编码的值"))
- 创建DolphinScheduler数据库:
CREATE DATABASE dolphinscheduler;
- 下载并执行初始化脚本:
# 下载DolphinScheduler数据库初始化脚本
wget https://raw.githubusercontent.com/apache/dolphinscheduler/3.2.0/dolphinscheduler-dao/src/main/resources/sql/dolphinscheduler_postgresql.sql
- 授予数据库权限:
# 授予所有权限给dolphinscheduler用户
-- 授予用户创建数据库的权限
ALTER USER dolphinscheduler CREATEDB;
-- 创建数据库并指定所有者
CREATE DATABASE dolphinscheduler OWNER dolphinscheduler;
-- 授予用户对数据库的所有权限
GRANT ALL PRIVILEGES ON DATABASE dolphinscheduler TO dolphinscheduler;
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO dolphinscheduler;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO dolphinscheduler;
GRANT ALL PRIVILEGES ON ALL FUNCTIONS IN SCHEMA public TO dolphinscheduler;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON TABLES TO dolphinscheduler;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON SEQUENCES TO dolphinscheduler;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON FUNCTIONS TO dolphinscheduler;
3. 通过 YAML 文件部署 DolphinScheduler
3.1 部署准备
- 确保已创建
dolphinscheduler
命名空间 - 确认 NFS 本地映射存储可用
- 检查镜像拉取策略
3.2 镜像源配置
为了提高部署速度,建议使用国内镜像源。在部署前可以配置镜像加速:
# 推荐的镜像源配置
# 可以在 KubeSphere 集群设置中配置 Docker 镜像加速器
# 官方镜像
apache/dolphinscheduler-api:3.2.0
apache/dolphinscheduler-master:3.2.0
apache/dolphinscheduler-worker:3.2.0
apache/dolphinscheduler-alert-server:3.2.0
# 如果官方镜像拉取较慢,可以在 https://docker.aityp.com 搜索后替换
3.3 创建部署文件
在 KubeSphere 中创建部署文件:
- 进入应用负载 → 工作负载 → 部署
- 点击创建
- 选择通过 YAML 创建
- 按照以下顺序部署各个组件
重要提示:请按照以下顺序部署,确保依赖关系正确:
- 首先创建 ZooKeeper 存储卷
- 然后部署 ZooKeeper
- 等待 ZooKeeper 完全启动
- 最后部署 DolphinScheduler 各个组件
3.4 ZooKeeper 存储和部署
第一步:创建 ZooKeeper PVC
使用 NFS Subdir External Provisioner,直接创建 PVC 即可自动供应存储:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: zookeeper-pvc
namespace: dolphinscheduler
spec:
accessModes:
- ReadWriteMany # NFS支持多节点读写
resources:
requests:
storage: 8Gi
storageClassName: dolphinscheduler-nfs-storage # 使用NFS Subdir External Provisioner存储类
配置说明:
- 自动供应:NFS Subdir External Provisioner会自动创建PV和NFS子目录
- 目录结构:会在NFS服务器上自动创建
/volume1/k8s-storage/dolphinscheduler/dolphinscheduler/zookeeper-pvc/
目录 - 即时绑定:由于使用
volumeBindingMode: Immediate
,PVC会立即绑定 - 动态管理:无需手动创建PV,完全由Provisioner自动管理
第二步:创建 ZooKeeper Deployment 和 Service
PVC 创建后会自动绑定,可以直接创建 Deployment:
apiVersion: apps/v1
kind: Deployment
metadata:
name: zookeeper
namespace: dolphinscheduler
labels:
app: zookeeper
spec:
replicas: 1
selector:
matchLabels:
app: zookeeper
template:
metadata:
labels:
app: zookeeper
spec:
containers:
- name: zookeeper
image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/zookeeper:latest
ports:
- containerPort: 2181
env:
- name: ZOO_MY_ID
value: "1"
- name: ZOO_SERVERS
value: "server.1=0.0.0.0:2888:3888;2181"
volumeMounts:
- name: zookeeper-data
mountPath: /data
resources:
limits:
memory: 1Gi
cpu: 500m
requests:
memory: 512Mi
cpu: 250m
volumes:
- name: zookeeper-data
persistentVolumeClaim:
claimName: zookeeper-pvc
---
apiVersion: v1
kind: Service
metadata:
name: zookeeper
namespace: dolphinscheduler
spec:
selector:
app: zookeeper
ports:
- port: 2181
targetPort: 2181
type: ClusterIP
3.5 DolphinScheduler Master 部署
apiVersion: apps/v1
kind: Deployment
metadata:
name: dolphinscheduler-master
namespace: dolphinscheduler
labels:
app: dolphinscheduler-master
spec:
replicas: 1 # 修改为单节点部署
selector:
matchLabels:
app: dolphinscheduler-master
template:
metadata:
labels:
app: dolphinscheduler-master
spec:
containers:
- name: master
image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/apache/dolphinscheduler-master:3.2.2
ports:
- containerPort: 5678
env:
- name: TZ
value: "Asia/Shanghai"
- name: SPRING_PROFILES_ACTIVE
value: "postgresql"
- name: DATABASE_HOST
valueFrom:
secretKeyRef:
name: dolphinscheduler-secrets
key: database-host
- name: DATABASE_PORT
valueFrom:
secretKeyRef:
name: dolphinscheduler-secrets
key: database-port
- name: DATABASE_USERNAME
valueFrom:
secretKeyRef:
name: dolphinscheduler-secrets
key: database-username
- name: DATABASE_PASSWORD
valueFrom:
secretKeyRef:
name: dolphinscheduler-secrets
key: database-password
- name: DATABASE_DATABASE
valueFrom:
secretKeyRef:
name: dolphinscheduler-secrets
key: database-name
# 添加Spring数据源配置,确保应用程序使用正确的数据库连接
- name: SPRING_DATASOURCE_URL
value: "jdbc:postgresql://$(DATABASE_HOST):$(DATABASE_PORT)/$(DATABASE_DATABASE)"
- name: SPRING_DATASOURCE_USERNAME
valueFrom:
secretKeyRef:
name: dolphinscheduler-secrets
key: database-username
- name: SPRING_DATASOURCE_PASSWORD
valueFrom:
secretKeyRef:
name: dolphinscheduler-secrets
key: database-password
- name: SPRING_DATASOURCE_DRIVER_CLASS_NAME
value: "org.postgresql.Driver"
- name: ZOOKEEPER_QUORUM
value: "zookeeper.dolphinscheduler.svc.cluster.local:2181"
- name: registry.zookeeper.connect-string
value: "zookeeper.dolphinscheduler.svc.cluster.local:2181"
- name: JAVA_OPTS
value: "-Xms1g -Xmx2g -Xmn512m" # 减少内存占用
- name: WORKER_EXEC_THREADS
value: "50" # 减少线程数
resources:
limits:
memory: 4Gi # 增加内存限制
cpu: 4000m # 增加CPU限制
requests:
memory: 2Gi # 增加内存请求
cpu: 2000m # 增加CPU请求
livenessProbe:
httpGet:
path: /actuator/health
port: 5679
initialDelaySeconds: 30
periodSeconds: 30
timeoutSeconds: 5
failureThreshold: 3
readinessProbe:
httpGet:
path: /actuator/health
port: 5679
initialDelaySeconds: 30
periodSeconds: 30
timeoutSeconds: 5
failureThreshold: 3
---
apiVersion: v1
kind: Service
metadata:
name: dolphinscheduler-master
namespace: dolphinscheduler
spec:
selector:
app: dolphinscheduler-master
ports:
- port: 5678
targetPort: 5678
type: ClusterIP
3.6 DolphinScheduler Worker 部署
apiVersion: apps/v1
kind: Deployment
metadata:
name: dolphinscheduler-worker
namespace: dolphinscheduler
labels:
app: dolphinscheduler-worker
spec:
replicas: 1 # 修改为单节点部署
selector:
matchLabels:
app: dolphinscheduler-worker
template:
metadata:
labels:
app: dolphinscheduler-worker
spec:
containers:
- name: worker
image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/apache/dolphinscheduler-worker:3.2.2
ports:
- containerPort: 1234
env:
- name: TZ
value: "Asia/Shanghai"
- name: SPRING_PROFILES_ACTIVE
value: "postgresql"
- name: DATABASE_HOST
valueFrom:
secretKeyRef:
name: dolphinscheduler-secrets
key: database-host
- name: DATABASE_PORT
valueFrom:
secretKeyRef:
name: dolphinscheduler-secrets
key: database-port
- name: DATABASE_USERNAME
valueFrom:
secretKeyRef:
name: dolphinscheduler-secrets
key: database-username
- name: DATABASE_PASSWORD
valueFrom:
secretKeyRef:
name: dolphinscheduler-secrets
key: database-password
- name: DATABASE_DATABASE
valueFrom:
secretKeyRef:
name: dolphinscheduler-secrets
key: database-name
# 添加Spring数据源配置,确保应用程序使用正确的数据库连接
- name: SPRING_DATASOURCE_URL
value: "jdbc:postgresql://$(DATABASE_HOST):$(DATABASE_PORT)/$(DATABASE_DATABASE)"
- name: SPRING_DATASOURCE_USERNAME
valueFrom:
secretKeyRef:
name: dolphinscheduler-secrets
key: database-username
- name: SPRING_DATASOURCE_PASSWORD
valueFrom:
secretKeyRef:
name: dolphinscheduler-secrets
key: database-password
- name: SPRING_DATASOURCE_DRIVER_CLASS_NAME
value: "org.postgresql.Driver"
- name: ZOOKEEPER_QUORUM
value: "zookeeper.dolphinscheduler.svc.cluster.local:2181"
- name: registry.zookeeper.connect-string
value: "zookeeper.dolphinscheduler.svc.cluster.local:2181"
- name: JAVA_OPTS
value: "-Xms1g -Xmx2g -Xmn512m" # 减少内存占用
- name: WORKER_EXEC_THREADS
value: "50" # 减少线程数
resources:
limits:
memory: 4Gi # 增加内存限制
cpu: 4000m # 增加CPU限制
requests:
memory: 2Gi # 增加内存请求
cpu: 2000m # 增加CPU请求
livenessProbe:
httpGet:
path: /actuator/health
port: 1235
initialDelaySeconds: 30
periodSeconds: 30
timeoutSeconds: 5
failureThreshold: 3
readinessProbe:
httpGet:
path: /actuator/health
port: 1235
initialDelaySeconds: 30
periodSeconds: 30
timeoutSeconds: 5
failureThreshold: 3
---
apiVersion: v1
kind: Service
metadata:
name: dolphinscheduler-worker
namespace: dolphinscheduler
spec:
selector:
app: dolphinscheduler-worker
ports:
- port: 1234
targetPort: 1234
type: ClusterIP
3.7 DolphinScheduler API 部署
apiVersion: apps/v1
kind: Deployment
metadata:
name: dolphinscheduler-api
namespace: dolphinscheduler
labels:
app: dolphinscheduler-api
spec:
replicas: 1
selector:
matchLabels:
app: dolphinscheduler-api
template:
metadata:
labels:
app: dolphinscheduler-api
spec:
containers:
- name: api
image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/apache/dolphinscheduler-api:3.2.2
ports:
- containerPort: 12345
env:
- name: TZ
value: "Asia/Shanghai"
- name: SPRING_PROFILES_ACTIVE
value: "postgresql"
- name: DATABASE_HOST
valueFrom:
secretKeyRef:
name: dolphinscheduler-secrets
key: database-host
- name: DATABASE_PORT
valueFrom:
secretKeyRef:
name: dolphinscheduler-secrets
key: database-port
- name: DATABASE_USERNAME
valueFrom:
secretKeyRef:
name: dolphinscheduler-secrets
key: database-username
- name: DATABASE_PASSWORD
valueFrom:
secretKeyRef:
name: dolphinscheduler-secrets
key: database-password
- name: DATABASE_DATABASE
valueFrom:
secretKeyRef:
name: dolphinscheduler-secrets
key: database-name
# 添加Spring数据源配置,确保应用程序使用正确的数据库连接
- name: SPRING_DATASOURCE_URL
value: "jdbc:postgresql://$(DATABASE_HOST):$(DATABASE_PORT)/$(DATABASE_DATABASE)"
- name: SPRING_DATASOURCE_USERNAME
valueFrom:
secretKeyRef:
name: dolphinscheduler-secrets
key: database-username
- name: SPRING_DATASOURCE_PASSWORD
valueFrom:
secretKeyRef:
name: dolphinscheduler-secrets
key: database-password
- name: SPRING_DATASOURCE_DRIVER_CLASS_NAME
value: "org.postgresql.Driver"
- name: ZOOKEEPER_QUORUM
value: "zookeeper.dolphinscheduler.svc.cluster.local:2181"
- name: registry.zookeeper.connect-string
value: "zookeeper.dolphinscheduler.svc.cluster.local:2181"
- name: JAVA_OPTS
value: "-Xms1g -Xmx2g -Xmn512m" # 减少内存占用
- name: WORKER_EXEC_THREADS
value: "50" # 减少线程数
resources:
limits:
memory: 4Gi # 增加内存限制
cpu: 4000m # 增加CPU限制
requests:
memory: 2Gi # 增加内存请求
cpu: 2000m # 增加CPU请求
livenessProbe:
httpGet:
path: /dolphinscheduler/actuator/health
port: 12345
initialDelaySeconds: 30
periodSeconds: 30
timeoutSeconds: 5
failureThreshold: 3
readinessProbe:
httpGet:
path: /dolphinscheduler/actuator/health
port: 12345
initialDelaySeconds: 30
periodSeconds: 30
timeoutSeconds: 5
failureThreshold: 3
---
apiVersion: v1
kind: Service
metadata:
name: dolphinscheduler-api
namespace: dolphinscheduler
spec:
selector:
app: dolphinscheduler-api
ports:
- port: 12345
targetPort: 12345
type: ClusterIP
3.8 DolphinScheduler Alert 部署
apiVersion: apps/v1
kind: Deployment
metadata:
name: dolphinscheduler-alert
namespace: dolphinscheduler
labels:
app: dolphinscheduler-alert
spec:
replicas: 1
selector:
matchLabels:
app: dolphinscheduler-alert
template:
metadata:
labels:
app: dolphinscheduler-alert
spec:
containers:
- name: alert
image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/apache/dolphinscheduler-alert-server:3.2.2
ports:
- containerPort: 50052
env:
- name: TZ
value: "Asia/Shanghai"
- name: SPRING_PROFILES_ACTIVE
value: "postgresql"
- name: DATABASE_HOST
valueFrom:
secretKeyRef:
name: dolphinscheduler-secrets
key: database-host
- name: DATABASE_PORT
valueFrom:
secretKeyRef:
name: dolphinscheduler-secrets
key: database-port
- name: DATABASE_USERNAME
valueFrom:
secretKeyRef:
name: dolphinscheduler-secrets
key: database-username
- name: DATABASE_PASSWORD
valueFrom:
secretKeyRef:
name: dolphinscheduler-secrets
key: database-password
- name: DATABASE_DATABASE
valueFrom:
secretKeyRef:
name: dolphinscheduler-secrets
key: database-name
# 添加Spring数据源配置,确保应用程序使用正确的数据库连接
- name: SPRING_DATASOURCE_URL
value: "jdbc:postgresql://$(DATABASE_HOST):$(DATABASE_PORT)/$(DATABASE_DATABASE)"
- name: SPRING_DATASOURCE_USERNAME
valueFrom:
secretKeyRef:
name: dolphinscheduler-secrets
key: database-username
- name: SPRING_DATASOURCE_PASSWORD
valueFrom:
secretKeyRef:
name: dolphinscheduler-secrets
key: database-password
- name: SPRING_DATASOURCE_DRIVER_CLASS_NAME
value: "org.postgresql.Driver"
- name: ZOOKEEPER_QUORUM
value: "zookeeper.dolphinscheduler.svc.cluster.local:2181"
- name: registry.zookeeper.connect-string
value: "zookeeper.dolphinscheduler.svc.cluster.local:2181"
- name: JAVA_OPTS
value: "-Xms1g -Xmx2g -Xmn512m" # 减少内存占用
- name: WORKER_EXEC_THREADS
value: "50" # 减少线程数
resources:
limits:
memory: 4Gi # 增加内存限制
cpu: 4000m # 增加CPU限制
requests:
memory: 2Gi # 增加内存请求
cpu: 2000m # 增加CPU请求
---
apiVersion: v1
kind: Service
metadata:
name: dolphinscheduler-alert
namespace: dolphinscheduler
spec:
selector:
app: dolphinscheduler-alert
ports:
- port: 50052
targetPort: 50052
type: ClusterIP