本次演示环境使用DataEase版本:v1.5.0
设置k8s节点包括1台master和1台worker;
应用部署控制管理器使用deployment;
持久化存储使用hostPath写入到NFS挂载目录。
NFS挂载方式如下:
在master配置了nfs服务,并将nfs共享目录/nfs_storage挂在到了两个节点中的/opt/nfs;
如下图所示:
将DataEase安装包中的镜像一次导入到系统中,或导入到harbor中;
此次演示环境没有配置harbor,直接导入到两个k8s节点中:
cd /opt/dataease-v1.5.0-offline/ for i in `ls images/*.tar.gz`; do docker load < $i; done2. 创建共享目录
mkdir /opt/nfs/dataease/ #拷贝配置文件到共享目录 cp -r dataease-v1.5.0-offline/dataease/bin/ /opt/nfs/dataease/ cp -r dataease-v1.5.0-offline/dataease/templates/ /opt/nfs/dataease/conf cp -r dataease-v1.5.0-offline/dataease/plugins /opt/nfs/dataease/
修改配置文件
vi /opt/nfs/dataease/conf/dataease.properties
直接将下面的配置替换原配置
# 数据库配置 spring.datasource.url=jdbc:mysql://mysql:3306/dataease?autoReconnect=false&useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8&zeroDateTimeBehavior=convertToNull&useSSL=false spring.datasource.username=root spring.datasource.password=Password123@mysql carte.host=kettle carte.port=18080 carte.user=cluster carte.passwd=cluster doris.db=dataease doris.user=root doris.password=Password123@doris doris.host=doris-fe doris.port=9030 doris.httpPort=8030 #新建用户初始密码 dataease.init_password=DataEase123456 #登录超时时间单位min 如果不设置 默认8小时也就是480 dataease.login_timeout=480 logger.level=INFO3. 创建应用 3.1 创建MySQL
kubectl create -f 1.mysql-deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: mysql
namespace: de
spec:
selector:
matchLabels:
app: mysql
replicas: 1
template:
metadata:
labels:
app: mysql
spec:
containers:
- name: mysql
image: registry.cn-qingdao.aliyuncs.com/dataease/mysql:5.7.36
imagePullPolicy: IfNotPresent
env:
- name: MYSQL_ROOT_PASSWORD
value: "Password123@mysql"
ports:
- containerPort: 3306
protocol: TCP
volumeMounts:
- name: mysql-conf
mountPath: /etc/mysql/conf.d/my.cnf
- name: mysql-data
mountPath: /var/lib/mysql
- name: mysql-sql
mountPath: /docker-entrypoint-initdb.d
volumes:
- name: mysql-conf
hostPath:
path: /opt/nfs/dataease/conf/my.cnf
- name: mysql-data
hostPath:
path: /opt/nfs/dataease/data/mysql
- name: mysql-sql
hostPath:
path: /opt/nfs/dataease/bin/mysql
---
apiVersion: v1
kind: Service
metadata:
name: mysql
namespace: de
spec:
ports:
- name: mysql
protocol: TCP
port: 3306
targetPort: 3306
nodePort: 30306
type: NodePort
selector:
app: mysql
3.2 创建kettle
kubectl create -f 2.kettle-deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: kettle
namespace: de
spec:
selector:
matchLabels:
app: kettle
replicas: 1
template:
metadata:
labels:
app: kettle
spec:
containers:
- name: kettle
image: registry.cn-qingdao.aliyuncs.com/dataease/kettle:8.3-v1.2
imagePullPolicy: IfNotPresent
env:
- name: PENTAHO_DI_JAVA_OPTIONS
value: "-Xms1024m -Xmx4096m -XX:MaxPermSize=256m -Dfile.encoding=utf-8"
volumeMounts:
- name: kettle-conf
mountPath: /opt/dataease/conf
- name: kettle-data
mountPath: /opt/dataease/data/kettle
volumes:
- name: kettle-conf
hostPath:
path: /opt/nfs/dataease/conf/
- name: kettle-data
hostPath:
path: /opt/nfs/dataease/data/kettle
---
apiVersion: v1
kind: Service
metadata:
name: kettle
namespace: de
spec:
ports:
- name: kettle-18080
protocol: TCP
port: 18080
targetPort: 18080
- name: kettle-9051
protocol: TCP
port: 9051
targetPort: 9051
- name: kettle-11001
protocol: TCP
port: 11001
targetPort: 11001
type: ClusterIP
selector:
app: kettle
3.3 创建doris-fe
kubect create -f 3.doris-fe-deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: doris-fe
namespace: de
spec:
selector:
matchLabels:
app: doris-fe
replicas: 1
template:
metadata:
labels:
app: doris-fe
spec:
containers:
- name: doris-fe
image: registry.cn-qingdao.aliyuncs.com/dataease/doris:0.15
imagePullPolicy: IfNotPresent
env:
- name: DORIS_ROLE
value: fe-leader
volumeMounts:
- name: doris-fe-meta
mountPath: /opt/doris/fe/doris-meta
- name: doris-fe-logs
mountPath: /opt/doris/fe/log
- name: doris-fe-conf
mountPath: /opt/doris/fe/conf/fe.conf
- name: doris-fe-sql
mountPath: /docker-entrypoint-initdb.d/
volumes:
- name: doris-fe-meta
hostPath:
path: /opt/nfs/dataease/data/fe
- name: doris-fe-logs
hostPath:
path: /opt/nfs/dataease/logs/fe
- name: doris-fe-conf
hostPath:
path: /opt/nfs/dataease/conf/fe.conf
- name: doris-fe-sql
hostPath:
path: /opt/nfs/dataease/bin/doris
---
apiVersion: v1
kind: Service
metadata:
name: doris-fe
namespace: de
spec:
ports:
- name: doris-fe-9010
protocol: TCP
port: 9010
targetPort: 9010
- name: doris-fe-9020
protocol: TCP
port: 9020
targetPort: 9020
- name: doris-fe-9030
protocol: TCP
port: 9030
targetPort: 9030
- name: doris-fe-8030
protocol: TCP
port: 8030
targetPort: 8030
type: ClusterIP
selector:
app: doris-fe
3.4 创建doris-be
kubectl create -f 4.doris-be-deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: doris-be
namespace: de
spec:
selector:
matchLabels:
app: doris-be
replicas: 1
template:
metadata:
labels:
app: doris-be
spec:
containers:
- name: doris-be
image: registry.cn-qingdao.aliyuncs.com/dataease/doris:0.15
imagePullPolicy: IfNotPresent
env:
- name: DORIS_ROLE
value: be
volumeMounts:
- name: doris-be-storage
mountPath: /opt/doris/be/storage
- name: doris-be-logs
mountPath: /opt/doris/be/log
- name: doris-be-conf
mountPath: /opt/doris/be/conf/be.conf
volumes:
- name: doris-be-storage
hostPath:
path: /opt/nfs/dataease/data/be
- name: doris-be-logs
hostPath:
path: /opt/nfs/dataease/logs/be
- name: doris-be-conf
hostPath:
path: /opt/nfs/dataease/conf/be.conf
---
apiVersion: v1
kind: Service
metadata:
name: doris-be
namespace: de
spec:
ports:
- name: doris-be-9050
protocol: TCP
port: 9050
targetPort: 9050
- name: doris-be-9060
protocol: TCP
port: 9060
targetPort: 9060
- name: doris-be-8060
protocol: TCP
port: 8060
targetPort: 8060
- name: doris-be-8040
protocol: TCP
port: 8040
targetPort: 8040
type: ClusterIP
selector:
app: doris-be
3.5 创建dataease
kubectl create -f 5.dataease-deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: dataease
namespace: de
spec:
selector:
matchLabels:
app: dataease
replicas: 1
template:
metadata:
labels:
app: dataease
spec:
containers:
- name: dataease
image: registry.cn-qingdao.aliyuncs.com/dataease/dataease:v1.5.0
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8081
protocol: TCP
volumeMounts:
- name: dataease-conf
mountPath: /opt/dataease/conf
- name: dataease-logs
mountPath: /opt/dataease/logs
- name: dataease-plug
mountPath: /opt/dataease/plugins/thirdpart
- name: dataease-kettle
mountPath: /opt/dataease/data/kettle
volumes:
- name: dataease-conf
hostPath:
path: /opt/nfs/dataease/conf
- name: dataease-logs
hostPath:
path: /opt/nfs/dataease/logs
- name: dataease-plug
hostPath:
path: /opt/nfs/dataease/plugins
- name: dataease-kettle
hostPath:
path: /opt/nfs/dataease/data/kettle
---
apiVersion: v1
kind: Service
metadata:
name: dataease
namespace: de
spec:
ports:
- name: dataease
protocol: TCP
port: 8081
targetPort: 8081
nodePort: 30801
type: NodePort
selector:
app: dataease
4. 检查部署状态
[root@demo-cluster-master-1 ~]# kubectl get pod,svc -n de NAME READY STATUS RESTARTS AGE pod/dataease-5c566598b6-mjhdr 1/1 Running 0 15h pod/doris-be-77b5756cf6-zfvch 1/1 Running 0 15h pod/doris-fe-5d67fc7689-rkv5p 1/1 Running 0 15h pod/kettle-794d7c6866-rsm78 1/1 Running 1 15h pod/mysql-78b68c6645-8lczs 1/1 Running 0 15h NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/dataease NodePort 172.20.45.215. 访问DataEase页面8081:30801/TCP 15h service/doris-be ClusterIP 172.20.234.111 9050/TCP,9060/TCP,8060/TCP,8040/TCP 15h service/doris-fe ClusterIP 172.20.8.27 9010/TCP,9020/TCP,9030/TCP,8030/TCP 15h service/kettle ClusterIP 172.20.117.187 18080/TCP,9051/TCP,11001/TCP 15h service/mysql NodePort 172.20.154.98 3306:30306/TCP 15h
http://nodeIP:30801
在k8s上部署DataEase后,直连数据库是正常的;定时拉取和上传Excel文件功能无法使用;
后续更新解决此问题。



