GBase GCDW
安装配置
文章

ZH-安装步骤-GCDW云数仓K8S版

发表于2026-01-23 08:58:2558次浏览5个评论

必要前提条件:
** 一、提前获取以下信息,并开通端口
* 1)元数据库FDB集群连接串,以及开通容器集群到FDB的 4500 ~ 4600 端口
AZDPsCO3:HtfBNbvuNPujYpI3Mvz0L5DbyLK5NaRh@172.16.5.170:4500,172.16.5.171:4500
* 2)日志归集ELK集群Hosts、filebeat用户名及密码,以及开通容器集群到ELK的 9200 9300 5601 端口
hosts        ["http://172.16.5.29:9200","http://172.16.5.28:9200"]
username    filebeat_internal
password    X@gbase2025
* 3)监控单机库gbase8a账户信息,以及开通容器集群到8a单机库的 5258 端口
IP            172.16.5.29
Port        5259
DB            monitor
username    gbase
password    X@gbase2025
* 4)镜像仓库URL、账户和密码,以及开通容器集群到镜像仓库的 443 端口
URL            172.16.5.29:443
username    admin
password    Harbor12345
* 5)对象存储EndPoint、Region、Bucket、AK、SK信息,以及开通容器集群到对象存储的 80 或 其他对象存储http协议 端口
EndPoint    172.16.5.28:8000
Region        test
Bucket        tujbbucket
AK            tujunbing
SK            tujunbing
* 6)开通GCDW组件的 Redis-6378 HTTP-8082 operator-9443 coordinator-5258 warehouse-5050 webSrvice-32144 agentService-32146 monitorWebService-32148,以及子容器的5050和5258对外端口

** 二、必要的软件版本和权限检查
* 1)Kubernetes(使用管理员权限的账户进行安装,必须满足权限要求)
在私有云环境部署时,如果无法提供Kubernetes的admin账户,安装用户也必须至少拥有以下权限:创建自定义资源(CRD)的权限,并能对其执行创建、删除、修改、查看等操作。创建名为  gcdw-operator-role的ClusterRole的权限,并能授予该角色对Deployments、StatefulSets、Pods、Services、ConfigMaps、Coordinators、Warehouses、Roles、RoleBindings、ClusterRoles、ClusterRoleBindings、Namespaces、ServiceAccounts等资源的创建、删除、获取、列表、更新、监视等权限。创建ServiceAccount gcdw-operator的权限,并能将其绑定到gcdw-operator-role。成功部署GCDW的关键前提是:使用一个拥有Kubernetes集群管理员权限的账户,并确保基础工具(kubectl、Helm V3)和集群核心服务(如CoreDNS)可用。在权限受限的私有云环境中,需确保安装账户拥有上述所列的最小权限集
a.检查版本(1.20及以上)    kubectl version
b.检查权限(system:masters用户组)    cat /root/.kube/config | python3 -c 'import yaml, sys;print(yaml.safe_load(sys.stdin)["users"][0]["user"]["client-certificate-data"])'|base64 -d| openssl x509 -noout -text | grep admin |grep Subject
c.kubectl命令操作k8s资源(显示kubectl版本)    kubectl version --client
d.支持helm模板安装(显示helm版本)    helm version

监控系统默认账户:admin/Admin@2024

 

#### 一、准备工作
## 1.1 上传镜像至镜像仓库
[root@gcdw1 ~]# cd /opt/GCDW-k8s-9.8.0.8.3_patch.18/gcdw/images; ll
[root@gcdw1 images]# docker images
# 镜像文件加载至本地
[root@gcdw1 images]# for imageFile in gcdw*.tar saas*.tar fdb*.tar filebeat*.tar logrotate*.tar; do echo -e " \033[0;33m *** Loading ${imageFile} *** \033[0m"; docker load -i "${imageFile}"; done
[root@gcdw1 images]# docker images
# 定义镜像仓库地址和镜像文件、版本
[root@gcdw1 images]# targetImage="harbor.gbase.cn/gcdw/"; gcdwimages=("gcdw-operator:9.8.0.8.3_patch.18" "gcdw-server:9.8.0.8.3_patch.18" "gcdw-logrotate:9.8.0.8.3_patch.18" "cloud-database-agent:9.8.0.8.3_patch.18" "clound-database-backend:9.8.0.8.3_patch.18" "clound-database-monitor-frontend:9.8.0.8.3_patch.18" "clound-database-frontend:9.8.0.8.3_patch.18" "fdb-update:1.0.1" "filebeat:7.17.23" "redis:6.2.3")
[root@gcdw1 images]# for imageInfo in ${gcdwimages[@]}; do docker images|grep $(echo ${imageInfo}|awk -F':' '{print $1}')|grep $(echo ${imageInfo}|awk -F':' '{print $2}')|grep -v grep; done
# 镜像文件标签指向仓库
[root@gcdw1 images]# for imageInfo in ${gcdwimages[@]}; do imageId=$(docker images|grep $(echo ${imageInfo}|cut -d ':' -f 1)|grep $(echo ${imageInfo}|cut -d ':' -f 2)|grep -v grep|awk '{print $3}'|uniq); echo -e " \033[0;33m *** Taging ${imageInfo} ${imageId} ${targetImage}${imageInfo} *** \033[0m"; docker tag "${imageId}" "${targetImage}${imageInfo}"; done
[root@gcdw1 images]# for imageInfo in ${gcdwimages[@]}; do docker images|grep $(echo ${imageInfo}|cut -d ':' -f 1)|grep $(echo ${imageInfo}|cut -d ':' -f 2)|grep -v grep; done
# 上传镜像至镜像仓库
[root@gcdw1 images]# for imageInfo in ${gcdwimages[@]}; do echo -e " \033[0;33m *** Pushing ${targetImage}${imageInfo} *** \033[0m"; docker push "${targetImage}${imageInfo}"; done

## 1.2 创建基础服务和租户命名空间(CCE操作)
[root@gcdw1 images]# kubectl get ns
# 创建基础服务组件命名空间
[root@gcdw1 images]# kubectl create ns gcdwbase
[root@gcdw1 images]# kubectl get ns
# 创建镜像仓库访问凭证(指向访问镜像仓库的SERVER、用户名、密码)
[root@gcdw1 images]# kubectl create secret --namespace gcdwbase docker-registry gcdwbase-regcred --docker-server=172.16.5.29:443 --docker-username=admin --docker-password=Harbor12345
[root@gcdw1 images]# kubectl get secret -n gcdwbase
# 创建监控租户的命名空间(若CCE云仓库不允许自建命名空间,则先在k8s创建/提供租户的命名空间后,再注册租户;租户的namespace不能包含特殊字符,租户名与此一致;若CCE云数仓允许自建租户的命名空间则设置value.yaml中autoCreateNamespace: true)
[root@gcdw1 images]# kubectl create ns tujbgcdw
[root@gcdw1 images]# kubectl get ns

## 1.3 准备软件运维脚本
# 上传gcdw_workspace.tar.gz至/opt目录下
[root@gcdw1 ~]# cd /opt
[root@gcdw1 opt]# unzip gcdw_workspace.zip
[root@gcdw1 opt]# cd /opt/gcdw_workspace; ll
[root@gcdw1 gcdw_workspace]# mkdir backup
[root@gcdw1 gcdw_workspace]# mv ../gcdw_workspace.zip backup
[root@gcdw1 gcdw_workspace]# scp -r /opt/GCDW-k8s-9.8.0.8.3_patch.18/gcdw/helm/helm_gcdw /opt/gcdw_workspace/setup/; ll setup

## 1.4 环境所需基础信息记录
[root@gcdw1 ~]# cd /opt/gcdw_workspace/setup/helm_gcdw
# 镜像仓库地址、密钥、账户、密码
[root@gcdw1 helm_gcdw]# echo -e "registryUrl=harbor.gbase.cn/gcdw\nregistryAPI=harbor.gbase.cn/gcdw\nregistrySecret=gcdwbase-regcred\nregistryUser=admin\nregistryPwd=Harbor12345" > gcdw_confg;
# OBS对象存储EndPoint、Region、Bucket、AK、SK
[root@gcdw1 helm_gcdw]# echo -e "obsEndPoint=172.16.5.28:8000\nobsRegion=test\nobsBucket=tujbbucket\nobsAK=tujunbing\nobsSK=tujunbing" >> gcdw_confg;
# FDB元数据库IP+端口、连接串
[root@gcdw1 helm_gcdw]# echo -e "fdbUrl=172.16.5.170:4500\nfdbCluster=AZDPsCO3:HtfBNbvuNPujYpI3Mvz0L5DbyLK5NaRh@172.16.5.170:4500,172.16.5.171:4500" >> gcdw_confg;
# GCDW租户DBA初始密码
[root@gcdw1 helm_gcdw]# echo -e "accountInitPwd=X@gbase2024" >> gcdw_confg;
# ELK集群host及账户信息
[root@gcdw1 helm_gcdw]# echo -e "elkHosts=[\"http://172.16.5.29:9200\",\"http://172.16.5.28:9200\"]\nfbUser=filebeat_internal\nfbPwd=X@gbase2025" >> gcdw_confg;
[root@gcdw1 helm_gcdw]# cat gcdw_confg

## 1.5 外部服务连通性验证
# 镜像仓库账号验证
[root@gcdw1 helm_gcdw]# registryUrl=$(cat gcdw_confg |grep ^registryUrl |awk -F= '{print $2}' | awk '{print $1}'); registryUser=$(cat gcdw_confg |grep ^registryUser |awk -F= '{print $2}' | awk '{print $1}'); registryPwd=$(cat gcdw_confg |grep ^registryPwd |awk -F= '{print $2}' | awk '{print $1}')
[root@gcdw1 helm_gcdw]# docker login $registryUrl -u $registryUser -p $registryPwd
# 对象存储连通验证
[root@gcdw1 helm_gcdw]# obsEndPoint=$(cat gcdw_confg |grep ^obsEndPoint |awk -F= '{print $2}' | awk '{print $1}'); obsIP=$(echo $obsEndPoint|cut -d ':' -f 1); obsPort=$(echo $obsEndPoint|cut -d ':' -f 2)
[root@gcdw1 helm_gcdw]# telnet $obsIP $obsPort
# FDB元数据库验证
[root@gcdw1 helm_gcdw]# fdbUrl=$(cat gcdw_confg |grep ^fdbUrl |awk -F= '{print $2}' | awk '{print $1}'); fdbIP=$(echo $fdbUrl|cut -d ':' -f 1); fdbPort=$(echo $fdbUrl|cut -d ':' -f 2)
[root@gcdw1 helm_gcdw]# telnet $fdbIP $fdbPort

## 1.6 修改配置文件
[root@gcdw1 ~]# cd /opt/gcdw_workspace/setup/helm_gcdw
[root@gcdw1 helm_gcdw]# cp chart/values.yaml chart/values_bak.yaml
# 镜像仓库地址配置
[root@gcdw1 helm_gcdw]# registryUrl=$(cat gcdw_confg |grep ^registryUrl |awk -F= '{print $2}' | awk '{print $1}'); registrySecret=$(cat gcdw_confg |grep ^registrySecret |awk -F= '{print $2}' | awk '{print $1}'); 
[root@gcdw1 helm_gcdw]# cat -n chart/values.yaml | grep -A2 registry
[root@gcdw1 helm_gcdw]# sed -i "s|^.*registry.*$|    registry: \"${registryUrl}\"|g;s/^.*imagePullSecrets.*$/    imagePullSecrets: \"${registrySecret}\"/g" chart/values.yaml
[root@gcdw1 helm_gcdw]# cat -n chart/values.yaml | grep -A2 registry
# 镜像仓库账号配置
[root@gcdw1 helm_gcdw]# registryAPI=$(cat gcdw_confg |grep ^registryAPI |awk -F= '{print $2}' | awk '{print $1}'); registryUser=$(cat gcdw_confg |grep ^registryUser |awk -F= '{print $2}' | awk '{print $1}'); registryPwd=$(cat gcdw_confg |grep ^registryPwd |awk -F= '{print $2}' | awk '{print $1}')
[root@gcdw1 helm_gcdw]# regUserBase64=$(echo $registryUser|base64 -w 0); regPwdBase64=$(echo $registryPwd|base64 -w 0)
[root@gcdw1 helm_gcdw]# cat -n chart/values.yaml | grep -A6 multiTenantMode
[root@gcdw1 helm_gcdw]# sed -i "s|      server: \".*$|      server: \"${registryAPI}\"|g;s/      username: \".*$/      username: \"${regUserBase64}\"/g;s/      password: \".*$/      password: \"${regPwdBase64}\"/g" chart/values.yaml
[root@gcdw1 helm_gcdw]# cat -n chart/values.yaml | grep -A6 multiTenantMode
# FDB账号配置
[root@gcdw1 helm_gcdw]# fdbCluster=$(cat gcdw_confg |grep ^fdbCluster |awk -F= '{print $2}' | awk '{print $1}'); fdbBase64=$(echo $fdbCluster|base64 -w 0);
[root@gcdw1 helm_gcdw]# cat -n chart/values.yaml | grep fdb_cluster
[root@gcdw1 helm_gcdw]# sed -i "s/^.*fdb_cluster.*$/    fdb_cluster: \"${fdbBase64}\"/g" chart/values.yaml
[root@gcdw1 helm_gcdw]# cat -n chart/values.yaml | grep fdb_cluster
# 租户DBA账户密码设置
[root@gcdw1 helm_gcdw]# accountInitPwd=$(cat gcdw_confg |grep ^accountInitPwd |awk -F= '{print $2}' | awk '{print $1}'); accountPwdBase64=$(echo $accountInitPwd|base64 -w 0);
[root@gcdw1 helm_gcdw]# cat -n chart/values.yaml | grep account_init_password
[root@gcdw1 helm_gcdw]# sed -i "s/  account_init_password: \".*$/  account_init_password: \"${accountPwdBase64}\"/g" chart/values.yaml
[root@gcdw1 helm_gcdw]# cat -n chart/values.yaml | grep account_init_password
# ELK集群host及账号配置
[root@gcdw1 helm_gcdw]# elkHosts=$(cat gcdw_confg|grep ^elkHosts|awk -F= '{print $2}'|awk '{print $1}'); fbUser=$(cat gcdw_confg|grep ^fbUser|awk -F= '{print $2}' |awk '{print $1}'); fbPwd=$(cat gcdw_confg|grep ^fbPwd|awk -F= '{print $2}'|awk '{print $1}'); 
[root@gcdw1 helm_gcdw]# cat chart/values.yaml | grep filebeatImage; cat -n chart/values.yaml | grep -A2 hosts
[root@gcdw1 helm_gcdw]# sed -i "s|filebeat:7.17.9|filebeat:7.17.23|g" chart/values.yaml
[root@gcdw1 helm_gcdw]# sed -i "s|^.*hosts.*$|        hosts: ${elkHosts}\n        username: \"${fbUser}\"\n        password: \"${fbPwd}\"|g" chart/values.yaml
[root@gcdw1 helm_gcdw]# cat chart/values.yaml | grep filebeatImage; cat -n chart/values.yaml | grep -A2 hosts
# 字符集参数配置
[root@gcdw1 helm_gcdw]# cat -n chart/values.yaml | grep characterSet
[root@gcdw1 helm_gcdw]# sed -i "s/^.*characterSet.*$/  characterSet: \"utf8mb4\"/g" chart/values.yaml
[root@gcdw1 helm_gcdw]# cat -n chart/values.yaml | grep characterSet
# PV存储卷存储配置(测试环境取消storage.enabled: false; 所有服务调小requests.cpu2 memory4Gi;warehouse设置为requests.cpu4 memory16Gi)
[root@gcdw1 helm_gcdw]# 
[root@gcdw1 helm_gcdw]# 
[root@gcdw1 helm_gcdw]#


#### 二、安装步骤
## 2.1 安装GCDW基础服务组件
# 创建自定义资源
[root@gcdw1 ~]# cd /opt/gcdw_workspace/setup/helm_gcdw
[root@gcdw1 helm_gcdw]# kubectl apply -f crds
# 安装基础服务组件
[root@gcdw1 helm_gcdw]# ./bin/helm install gcdw chart -n gcdwbase
# 查看基础服务组件部署情况
[root@gcdw1 helm_gcdw]# ./bin/helm ls -n gcdwbase
# 查看GCDW组件情况(所有组件均为 running)
[root@gcdw1 helm_gcdw]# kubectl get all -n gcdwbase
[root@gcdw1 helm_gcdw]# kubectl get all -n gcdwbase -o wide
[root@gcdw1 helm_gcdw]# kubectl get pods -n gcdwbase
[root@gcdw1 helm_gcdw]# kubectl describe pod gcdw-saas-backend-0 -n gcdwbase
# 卸载命令 ./bin/helm uninstall gcdw -n gcdwbase

## 2.2 初始化Account
[root@gcdw1 ~]# kubectl -it exec pod/gcdw-saas-backend-0 -c gcdw-saas-backend -n gcdwbase -- bash
# 初始化 account 工具密码(使用新的fdb集群,第一次使用account的时候执行,后续就不用执行,否则会报错open tenant error, ins_name: gcdw_account, msg: no next child)
[root@gcdw-saas-backend-0 backend]# ./account --init --admin_password=X@gbase2025
# 修改account密码
#[root@gcdw-saas-backend-0 backend]# ./account --alter_admin_password --admin_password X@gbase2025 --new_admin_password X@gbase2026
[root@gcdw-saas-backend-0 backend]# ./account --show

# 2.3 注册租户
[root@gcdw1 ~]# kubectl -it exec pod/gcdw-saas-backend-0 -c gcdw-saas-backend -n gcdwbase -- bash
[root@gcdw-saas-backend-0 backend]# ./account --show
# 注册新租户
# 若云仓库不允许自建命名空间,则先在k8s创建/提供租户的命名空间后,再注册租户;租户的namespace不能包含特殊字符,租户名与此一致;若云数仓允许自建租户的命名空间则value.yaml中autoCreateNamespace: false
[root@gcdw-saas-backend-0 backend]# ./account --create -A tujbgcdw -U gbase -P X@gbase2025 --storage_style=s3 --S3_accessKey=tujunbing --S3_secretKey=tujunbing --S3_endPoint=172.16.5.28:8000 --S3_region=test --S3_bucket=tujbbucket --admin_password=X@gbase2025
# 查看租户
[root@gcdw-saas-backend-0 backend]# ./account --show
[root@gcdw-saas-backend-0 backend]# exit
# 删除租户命令 ./account --drop --admin_password X@gbase2025 -A tujbgcdw

## 2.4 租户的gcadmin和gccli确认
[root@gcdw1 helm_gcdw]# kubectl get all -n tujbgcdw
# 进gcware pod执行gcadmin
[root@gcdw1 helm_gcdw]# kubectl -it exec pod/gcware-0 -c gcware -n tujbgcdw -- bash
[gbase@gcware-0 /]$ gcadmin
[gbase@gcware-0 /]$ exit
# 进coordinator pod执行gccli
[root@gcdw1 helm_gcdw]# kubectl -it exec coordinator-1-0 -c coordinator -n tujbgcdw -- bash
[gbase@coordinator-1-0 /]$ gccli -ugbase -pX@gbase2025
gbase> show warehouses;
gbase> show vcs;
gbase> exit
[gbase@coordinator-1-0 /]$ exit
[root@gcdw1 helm_gcdw]#

## 2.5 外部主机安装gccli工具
[root@etl1 ~]# useradd gcuser; 
# gccli工具上传至/home/user目录下
[root@etl1 ~]# chown -R gcuser:gcuser /home/gcuser/gccli_MPP_Cluster-NoLicense-9.8.0.8.3_patch.18-redhat7-x86_64.tar.bz2
[root@etl1 ~]# su - gcuser
[gcuser@etl1 ~]$ tar xvf gccli_MPP_Cluster-NoLicense-9.8.0.8.3_patch.18-redhat7-x86_64.tar.bz2
[gcuser@etl1 ~]$ cd gccli_install; sh gccli_install.sh gccli_standalone.tar.bz2
[gcuser@etl1 ~]$ echo -e "export GCLUSTER_BASE=\$HOME/gccli_install/gcluster\nexport GCLUSTER_HOME=\$HOME/gccli_install/gcluster/server\nexport GCLUSTER_SID=gcluster\nexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$GCLUSTER_HOME/lib/gbase\nexport PATH=$PATH:$GCLUSTER_HOME/bin" >> /home/gcuser/.bashrc
[gcuser@etl1 ~]$ soucre /home/gcuser/.bashrc; ./gccli_install/gcluster/server/bin/gccli -ugbase -pX@gbase2025 -h 172.16.5.29:23128,172.16.5.29:39903,172.16.5.29:34944 -e "select now()"

## 2.6 创建warehouse(后台操作+唤醒)
[root@gcdw1 helm_gcdw]# kubectl -it exec coordinator-1-0 -c coordinator -n tujbgcdw -- bash
[gbase@coordinator-1-0 /]$ gccli -ugbase -pX@gbase2025
gbase> CREATE WAREHOUSE wh1 WITH WAREHOUSE_SIZE = 'XSMALL' MIN_CLUSTER_COUNT= 1 MAX_CLUSTER_COUNT = 3 SCALING_POLICY = 'standard' AUTO_SUSPEND =600 AUTO_RESUME = 'true' COMMENT= 'gbase cloud data warehouse';
gbase> show warehouses;
gbase> alter warehouse wh1 resume if suspended;
gbase> show warehouses;
gbase> exit
[gbase@coordinator-1-0 /]$ exit
[root@gcdw1 helm_gcdw]#
# 查看wh pod
[root@gcdw1 helm_gcdw]# kubectl get all -n tujbgcdw

## 2.7 授权监控用户
[root@gcdw1 ~]# cd /opt/gcdw_workspace/scripts/k8s/grants_dbperf
# 入参:dbaUserName dbaUserPasswd tenantName warehouseName
[root@node8 grants_dbperf]# sh grants_dbperf.sh gbase X@gbase2025 tujbgcdw wh1

 

 

 

 

 

 

评论

登录后才可以发表评论
用户头像
mittens发表于 6个月前
感谢分享
用户头像
GBase用户28017发表于 6个月前
谢谢分享。
GBase用户47954发表于 3个月前
感谢作者的精彩分享!
GBase用户51820发表于 2个月前
学会了
xinyiedc!发表于 2个月前
加油