Kubernetes(k8s)部署DolphinScheduler

1.环境准备

1.1 集群规划

本次安装环境为:3台k8s+现有的mysql数据库+nfs

1.2 下载及介绍

DolphinScheduler-3.2.0官网:https://dolphinscheduler.apache.org/zh-cn/download/3.2.0
官网安装文档:https://dolphinscheduler.apache.org/zh-cn/docs/3.2.0/guide/installation/kubernetes#appendix-configurationr

2.前置工作

默认k8s集群已经安装完成,本次已腾讯的TKE为例介绍
参考腾讯TKE官方文档:https://cloud.tencent.com/document/product/457/32731

2.1 Helm配置

  1. 下载 Helm 客户端
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh

如果curl无法下载可以直接网页点开后复制里面的内容,然后创建get_helm.sh文件继续操作即可

  1. 配置 Helm Chart 仓库(可选)
# 执行以下命令,配置 kubernetes 官方仓库
helm repo add stable https://kubernetes-charts.storage.googleapis.com/
# 执行以下命令,配置腾讯云应用市场。
helm repo add tkemarket https://market-tke.tencentcloudcr.com/chartrepo/opensource-stable
  1. 连接集群
#执行以下命令,通过指定参数的形式访问目标集群。
helm  install ....  --kubeconfig [kubeconfig所在路径]
# 如果警告如下:#WARNING: Kubernetes configuration file is group-readable. This is insecure. Location:  /data/config,修改权限
chmod -R 600   ~/.kube/config
  1. helm常用命令举例
#helm 删除 官方仓库
helm repo remove  stable  
#仓库管理)查看添加的chart仓库,可在这些chart仓库中拉取chart
helm repo list#将chart包发布到k8s集群中安装部署
helm install releaseName chartName  
#列出所有已发布的版本
helm list
helm list -n test
helm list -A

2.2 配置PV

apiVersion: v1
kind: PersistentVolume
metadata:name: dol-software
spec:accessModes:- ReadWriteManycapacity:storage: 5Gicsi:driver: com.tencent.cloud.csi.cfsvolumeAttributes:host: xxxpath: /software/dol_softwarevers: "4"#   此处volumeHandle值要和下面的不同采用,否则不能同时挂载两个pvvolumeHandle: cfs2persistentVolumeReclaimPolicy: RetainstorageClassName: dol-softwarevolumeMode: Filesystem
---
apiVersion: v1
kind: PersistentVolume
metadata:name: dol-dolphinscheduler
spec:accessModes:- ReadWriteManycapacity:storage: 5Gicsi:driver: com.tencent.cloud.csi.cfsvolumeAttributes:host: xxxpath: /software/dolphinscheduler/data_dolphinschedulervers: "4"volumeHandle: cfs3persistentVolumeReclaimPolicy: RetainstorageClassName: dol-dolphinschedulervolumeMode: Filesystem

3.dolphinscheduler测试集群安装

测试集群使用会单独启动一个psql以及zookeeper
请下载源码包 apache-dolphinscheduler-3.2.0-src.tar.gz,下载
发布一个名为 dolphinscheduler 的版本(release),请执行以下命令:

$ tar -zxvf apache-dolphinscheduler-3.2.0-src.tar.gz
$ cd apache-dolphinscheduler-3.2.0-src/deploy/kubernetes/dolphinscheduler
$ helm repo add bitnami https://charts.bitnami.com/bitnami
$ helm dependency update .
$ helm install dolphinscheduler . --set image.tag=3.2.0

将名为 dolphinscheduler 的版本(release) 发布到 test 的命名空间中:

$ helm install dolphinscheduler . -n test

提示: 如果名为 test 的命名空间被使用, 选项参数 -n test 需要添加到 helm 和 kubectl 命令中

提示: 列出所有已发布的版本,使用 helm list,PostgreSQL (用户 root, 密码 root, 数据库 dolphinscheduler) 和 ZooKeeper 服务将会默认启动

4.dolphinscheduler生产集群安装

注:采用自有mysql存储元数据, ZooKeeper 服务将会默认启动

4.1 修改并重新构建各组件镜像

从 3.0.0 版本起,dolphinscheduler 已经微服务化,更改元数据存储需要对把所有的服务都替换为 MySQL 驱动包,包括 dolphinscheduler-tools, dolphinscheduler-master, dolphinscheduler-worker, dolphinscheduler-api, dolphinscheduler-alert-server

  1. 准备工作
mkdir /data
cp mysql-connector-java-8.0.16.jar /data
tee  /data/requirements.txt <<-'EOF'
flask
requests
EOF
  1. 配置Dockerfile

使用服务器构建

vim docker_test.sh
#!/bin/bash
tee /data/other/Dockerfile <<-'EOF'
FROM dolphinscheduler.docker.scarf.sh/apache/dolphinscheduler-worker:3.2.0
COPY mysql-connector-java-8.0.16.jar /opt/dolphinscheduler/libs
COPY requirements.txt /tmp
RUN apt-get update && \apt-get install -y --no-install-recommends python-pip && \pip install --no-cache-dir -r /tmp/requirements.txt && \pip install --no-cache-dir -U pip && \rm -rf /var/lib/apt/lists/*
RUN apt-get update && \apt-get install -y --no-install-recommends python3 && \apt-get install -y --no-install-recommends python3-pip && \rm -rf /var/lib/apt/lists/*
EOFcd /data/other
docker build -t apache/dolphinscheduler-master:mysql-driver .tee /data/other/Dockerfile <<-'EOF'
FROM dolphinscheduler.docker.scarf.sh/apache/dolphinscheduler-master:3.2.0
COPY mysql-connector-java-8.0.16.jar /opt/dolphinscheduler/libs
EOFcd /data/other
docker build -t apache/dolphinscheduler-master:mysql-driver .tee /data/other/Dockerfile <<-'EOF'
FROM dolphinscheduler.docker.scarf.sh/apache/dolphinscheduler-api:3.2.0
COPY mysql-connector-java-8.0.16.jar /opt/dolphinscheduler/libs
EOFcd /da ta/other
docker build -t apache/dolphinscheduler-api:mysql-driver .tee /data/other/Dockerfile <<-'EOF'
FROM dolphinscheduler.docker.scarf.sh/apache/dolphinscheduler-alert-server:3.2.0
COPY mysql-connector-java-8.0.16.jar /opt/dolphinscheduler/libs
EOFcd /data/other
docker build -t apache/dolphinscheduler-alert-server:mysql-driver .tee /data/other/Dockerfile <<-'EOF'
FROM dolphinscheduler.docker.scarf.sh/apache/dolphinscheduler-tools:3.2.0
COPY mysql-connector-java-8.0.16.jar /opt/dolphinscheduler/tools/libs
EOFcd /data/other
docker build -t apache/dolphinscheduler-tools:mysql-driver .

使用mac本地编译(服务器太慢可以采用,需要在mac上安装docker并开启允许多架构操作)

vim docker_test.sh
#!/bin/bash
tee /Users/other/Dockerfile <<-'EOF'
FROM  dolphinscheduler.docker.scarf.sh/apache/dolphinscheduler-worker:3.2.0
COPY mysql-connector-java-8.0.16.jar /opt/dolphinscheduler/libs
EOF
cd /Users/other
docker  buildx  build --platform=linux/amd64 -t apache/dolphinscheduler-worker:mysql-driver .tee  /Users/other/Dockerfile <<-'EOF'
FROM  dolphinscheduler.docker.scarf.sh/apache/dolphinscheduler-master:3.2.0
COPY mysql-connector-java-8.0.16.jar /opt/dolphinscheduler/libs
EOFcd /Users/other
docker  buildx  build --platform=linux/amd64  -t apache/dolphinscheduler-master:mysql-driver .tee /Users/other/Dockerfile <<-'EOF'
FROM   dolphinscheduler.docker.scarf.sh/apache/dolphinscheduler-api:3.2.0
COPY mysql-connector-java-8.0.16.jar /opt/dolphinscheduler/libs
EOFcd /Users/other
docker  buildx  build --platform=linux/amd64  -t apache/dolphinscheduler-api:mysql-driver .tee /Users/other/Dockerfile <<-'EOF'
FROM  dolphinscheduler.docker.scarf.sh/apache/dolphinscheduler-alert-server:3.2.0
COPY mysql-connector-java-8.0.16.jar /opt/dolphinscheduler/libs
EOFcd /Users/other
docker  buildx  build --platform=linux/amd64 -t apache/dolphinscheduler-alert-server:mysql-driver .tee /Users/other/Dockerfile <<-'EOF'
FROM - dolphinscheduler.docker.scarf.sh/apache/dolphinscheduler-tools:3.2.0
COPY mysql-connector-java-8.0.16.jar /opt/dolphinscheduler/tools/libs
EOFcd /Users/other
docker  buildx  build --platform=linux/amd64  -t apache/dolphinscheduler-tools:mysql-driver .

运行脚本

nohup bash /data/other/docker_test.sh > /data/other/log.txt 2>&1 &
或者
nohup bash /Users/other/docker_test.sh > /Users/other/log.txt 2>&1 &
  1. 推送镜像到镜像库

推送写脚本有点问题,不知道问什么,需要单独推送

docker tag apache/dolphinscheduler-worker:mysql-driver storage/bigdata/dolphinscheduler-worker:mysql-driver
docker push storage/bigdata/dolphinscheduler-worker:mysql-driverdocker tag apache/dolphinscheduler-master:mysql-driver storage/bigdata/dolphinscheduler-master:mysql-driver
docker push storage/bigdata/dolphinscheduler-master:mysql-driverdocker tag apache/dolphinscheduler-api:mysql-driver storage/bigdata/dolphinscheduler-api:mysql-driver
docker push storage/bigdata/dolphinscheduler-api:mysql-driverdocker tag apache/dolphinscheduler-alert-server:mysql-driver storage/bigdata/dolphinscheduler-alert-server:mysql-driver
docker push storage/bigdata/dolphinscheduler-alert-server:mysql-driverdocker tag apache/dolphinscheduler-tools:mysql-driver storage/bigdata/dolphinscheduler-tools:mysql-driver
docker push storage/bigdata/dolphinscheduler-tools:mysql-driver

4.2 配置修改

4.2.1 修改源码配置文件

vim {源码地址}}/dolphinscheduler/deploy/kubernetes
/dolphinscheduler/values.yamlimage:registry: "storage/bigdata"tag: "mysql-driver"pullPolicy: "IfNotPresent"pullSecret: ""master: dolphinscheduler-masterworker: dolphinscheduler-workerapi: dolphinscheduler-apialert: dolphinscheduler-alert-servertools: dolphinscheduler-tools
#修改 values.yaml 文件中 postgresql 的 enabled 为 false
postgresql:enabled: falsepostgresqlUsername: "root"postgresqlPassword: "root"
#修改 values.yaml 文件中的 externalDatabase 配置 (尤其修改 host, username 和 password)
mysql:enabled: falsedriverClassName: "com.mysql.cj.jdbc.Driver"auth:username: "xxx"password: "xxx"database: "dolphinscheduler"params: "characterEncoding=utf8"
externalDatabase:enabled: truetype: "mysql"host: "xxx"port: "3306"username: "xxx"password: "xxx"database: "dolphinscheduler"params: "useUnicode=true&characterEncoding=UTF-8"driverClassName: "com.mysql.cj.jdbc.Driver"
#数据持久化保存,可根据需要配置master/worker等sharedStoragePersistence:enabled: truemountPath: "/opt/soft"accessModes:- "ReadWriteMany"## storageClassName must support the access mode: ReadWriteManystorageClassName: "dol-software"storage: "5Gi"## If RESOURCE_STORAGE_TYPE is HDFS and FS_DEFAULT_FS is file:///, fsFileResourcePersistence should be enabled for resource storagefsFileResourcePersistence:enabled: trueaccessModes:- "ReadWriteMany"## storageClassName must support the access mode: ReadWriteManystorageClassName: "dol-dolphinscheduler"storage: "5Gi"
#配置java最大和最小内存配置,如果dolphinscheduler启动后负载过高可以适当增大JAVA_OPTS: "-Xms1g -Xmx5g -Xmn512m"#配置说明
#resource资源限制:namespace创建资源最大限制才可以配置,如不配置系统会给你的namespace配

4.2.2 安装

helm repo add bitnami https://charts.bitnami.com/bitnami
helm dependency update .
#helm install dolphinscheduler . -f values.yaml --set image.tag=3.2.0
helm install dolphinscheduler . -n test

4.2.3 安装过程中问题及解决

镜像问题

#报错如下:
# Error: INSTALLATION FAILED: An error occurred while checking for chart dependencies. You may need to run `helm dependency build` to fetch missing dependencies: found in Chart.yaml, but missing in charts/ directory: postgresql, zookeeper, mysql, minio
$ helm repo add bitnami-full-index https://raw.githubusercontent.com/bitnami/charts/archive-full-index/bitnami
#原请求地址为:https://raw.githubusercontent.com/,国内可能连接不上,变更RAW资源加速地址:https://raw.gitmirror.com
helm repo add bitnami-full-index  https://raw.gitmirror.com/bitnami/charts/archive-full-index/bitnami
"bitnami-full-index" has been added to your repositories
#重新安装
helm install dolphinscheduler . -n test#列出所有已发布的版本
helm list
helm list -n test
helm list -A

其它问题

#问题1:dolphinscheduler Failed to obtain JDBC Connection; nested exception is com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure
解决办法:配置文件加上&useSSL=fals
params: "useSSL=false&useUnicode=true&characterEncoding=UTF-8&allowPublicKeyRetrieval=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8"#问题2:pod 一直CrashLoopBackOff 并且执行kubectl logs podname 报错;exec /__cacert_entrypoint.sh: exec format error
# 容器镜像打包的有问题,不能在linux是使用,我用的mac,需要在mac上要开启 docker 的实验功能:
experimental: true
docker  buildx  build --platform=linux/amd64 -t apache/dolphinscheduler-worker:mysql-driver .#问题3:创建租户错误 java.lang.NullPointerException: null
需要将value.yaml中的配置修改为hdfs
common:## Configmapconfigmap:RESOURCE_STORAGE_TYPE: "HDFS"FS_DEFAULT_FS: "file:///"DOLPHINSCHEDULER_OPTS: ""DATA_BASEDIR_PATH: "/tmp/dolphinscheduler"RESOURCE_UPLOAD_PATH: "/dolphinscheduler"
# resource storage type: HDFS, S3, OSS, GCS, ABS, NONEresource.storage.type: HDFS

4.2.4本地打开UI页面

#当 api.service.type=ClusterIP 时,你需要执行 port-forward 端口转发命令:
# kubectl port-forward --address 0.0.0.0 svc/dolphinscheduler-api 12345:12345
# kubectl port-forward --address 0.0.0.0 -n test svc/dolphinscheduler-api 12345:12345
nohup kubectl port-forward --address 0.0.0.0 -n test svc/dolphinscheduler-api 12345:12345 >/dev/null  2>&1 &# 使用 test 命名空间
#提示: 如果出现 unable to do port forwarding: socat not found 错误, 需要先安装 socat

5.测试

访问前端页面: http://localhost:12345/dolphinscheduler/ui
默认的用户是admin,默认的密码是dolphinscheduler123

localhost为配置 port-forward 端口的服务器

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/580470.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CDN 原理

CDN 原理 CND 一般包含分发服务系统、负载均衡系统和管理系统 分发服务系统 其基本的工作单元就是各个 Cache 服务器。负责直接响应用户请求&#xff0c;将内容快速分发到用户&#xff1b;同时还负责内容更新&#xff0c;保证和源站内容的同步。 根据内容类型和服务种类的不…

CSS中浮动float带来的高度塌陷问题及4种解决方案

一&#xff1a;高度塌陷问题 在文档流中&#xff0c;父元素的高度默认是被子元素撑开的&#xff0c;也就是子元素多高&#xff0c;父元素就多高。但是当为子元素设置浮动以后&#xff0c;子元素会完全脱离文档流&#xff0c;此时将会导致子元素无法撑起父元素的高度&#xff0c…

IDEA2023创建web项目

一、新建项目 点击File->New->Project...&#xff0c;如果是第一次创建项目则单击New Project 二、添加Web Application 建好的样子 把web移动到main目录下同时改名为webapp 三、不存在Add Framework Support添加Web Application 如何存在Add Framework Support&#…

中间件系列 - Redis入门到实战(原理篇)

前言 学习视频&#xff1a; 黑马程序员Redis入门到实战教程&#xff0c;深度透析redis底层原理redis分布式锁企业解决方案黑马点评实战项目 中间件系列 - Redis入门到实战 本内容仅用于个人学习笔记&#xff0c;如有侵扰&#xff0c;联系删除 学习目标 Redis数据结构Redis网…

长图拼接软件,多张图片拼接合成一张

我们每天都会接触到无数的图片&#xff0c;有些图片或许只是短暂的惊艳&#xff0c;而有些则能深深触动我们的心灵。你是否想过&#xff0c;将那些美丽的瞬间拼接在一起&#xff0c;创造出一个全新的视觉体验&#xff1f;今天&#xff0c;我要为大家介绍一款拼接图片的软件——…

vue+element+springboot实现多张图片上传

1.需求说明 2.实现思路 3.el-upload组件主要属性说明 4.前端传递MultipartFile数组与服务端接收说明 5.完整代码 1.需求说明 动态模块新增添加动态功能,支持多张图片上传.实现过程中对el-upload组件不是很熟悉,踩了很多坑,当然也参考过别的文章,发现处…

低代码选型注意事项

凭借着革命性的生产力优势&#xff0c;低代码技术火爆了整个IT圈。面对纷繁复杂的低代码和无代码产品&#xff0c;开发者该如何选择&#xff1f; 在研究低代码平台的年数上&#xff0c;本人已有3年&#xff0c;也算是个低代码资深用户了&#xff0c;很多企业面临低代码选型上的…

果然,大厂都在卷这个!

大家好&#xff0c;我是鱼皮。首先祝大家平安夜快乐&#xff01;给大家看看我们搞的小圣诞树哈哈&#xff5e; 言归正传&#xff0c;这周中我去北京待了 2 天&#xff0c;主要是收到百度的邀请去参加百度云的智算大会&#xff0c;听说有些 AI 产品要发布。 我自己是非常关注国内…

安装kafka

静态文件安装&#xff08;单机&#xff09; 解压到指定目录&#xff08;解压到 /usr&#xff09; tar -zxf kafka_2.11-2.2.0.tgz -C /usr/ 到指定的解压目录下 cd /usr/kafka_2.11-2.2.0/ 配置主机名 查看是否配置了HOSTNAME vim /etc/sysconfig/network 没有就新增 HOSTNA…

Python模拟动态星空

前言 今天&#xff0c;我们来用Python做个星空。 一、模拟星空 1,.首先导入所需要的库&#xff1a; from turtle import * from random import random, randint 2.初始画面&#xff1a; screen Screen() width, height 800, 600 screen.setup(width, height) screen.tit…

信号与线性系统翻转课堂笔记12——时域取样定理

信号与线性系统翻转课堂笔记12 The Flipped Classroom12 of Signals and Linear Systems 对应教材&#xff1a;《信号与线性系统分析&#xff08;第五版&#xff09;》高等教育出版社&#xff0c;吴大正著 一、要点 &#xff08;1&#xff09;了解信号取样的概念&#xff1…

Redis分布式锁进阶源码分析

Redis分布式锁进阶源码分析 1、如何写一个商品秒杀代码&#xff1f;2、加上Java锁3、使用redis setnx命令获取锁4、增加try和finally5、给锁设置过期时间6、增长过期时间&#xff0c;并setnx增加唯一value7、使用redisson8、源码分析a、RedissonLock.tryLockInnerAsyncb、Redis…

插入排序,选择排序,冒泡排序,顺序搜索,二分搜索,迭代,求最大公因数,最小公倍数等简单模板

目录 1.排序 1.插入排序模板 2.冒泡排序模板 3.选择排序模板 2.搜索 1.顺序搜索 2.二分搜索 3.迭代 1.基础迭代 ​编辑 4.求最大公因数&#xff0c;最小公倍数 1.最直接的方法 取巧一点 2.辗转相除法&#xff08;欧几里得法&#xff09; 1.排序 1.插入排序模板 插…

ES慢查询分析——性能提升6 倍

问题 生产环境频繁报警。查询跨度91天的数据&#xff0c;请求耗时已经来到了30s。报警的阈值为5s。 背景 查询关键词简单&#xff0c;为‘北京’ 单次仅检索两个字段 查询时间跨度为91天&#xff0c;覆盖数据为450亿数据 问题分析 使用profle分析&#xff0c;复现监控报警的…

Halo多博客备份,同时备份redis与mysql,将备份文件上传到百度云

代码&#xff1a;https://github.com/loks666/py_tools 写在前面 我的服务器运行了多个halo博客&#xff0c;都在同一个域名下&#xff0c;只是用前缀区分&#xff0c;所以代码中我也是使用前缀区分的&#xff0c;使用了list元祖中包含了多个halo站点信息&#xff0c;记得在代…

PSV新内存卡(或内存卡格式化后)如何安装VITASHELL文件管理器

本博文适合PSV破解固化后的系统&#xff0c;例如变革3.65破解固化后换新的内存卡&#xff0c;或者内存卡格式化后如何在内存卡上安装文件管理器&#xff08;没有文件管理器无法安装游戏&#xff09;。如果你的PSV还没破解&#xff0c;那本文不适合没破解的情况&#xff0c;按照…

数据库(多对多表关系及关联查询)

添加外键约束&#xff1a; alter table 表名 drop foreign_key fk(外键约束)_ 表名_列名_列名 添加约束规则&#xff1a; 1.主表中没有对应记录&#xff0c;不能将记录添加到从表 2.从表存在与主表对应的记录&#xff0c;不能从主表中删除该行 3.删除主标前&#xff0c;先…

问题:执行conda init 提示 No action taken,然后无法正确激活环境

执行完下面代码后&#xff0c; conda activate base 报错&#xff0c;提示先执行conda init,于是再执行下面代码 conda init发现还报错提示提示 No action taken。 解决方法&#xff1a; 打开一个新的终端窗口&#xff0c;您应该就可以正常使用conda命令。&#xff08;把其…

VIRTUALBOX VAGRANT虚拟机网速慢解决方案

查看时长 time curl -s http://www.baidu.com > /dev/null 1config.vm.provider :virtualbox do |vb| 2 vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"] 3 vb.customize ["modifyvm", :id, "--natdn…

ElasticSearch 的 mapping 参数 - fields

概要 在 es 中&#xff0c;一个字段可能运用于不同的场景&#xff0c;但是某个字段类型的使用场景是有局限的 下面&#xff0c;我们先来看一段 es 查询语句&#xff1a; $must ["bool" > ["should" > [["range" > ["user_id.r…