人大金仓KingbaseES Operator 部署 KingbaseES 集群

关键字:

Operator ,kubernetes,部署 KingbaseES,人大金仓

部署

部署 KingbaseES Operator

前置条件

KingbaseES Operator 部署前,请确认以下软件需求:

  • kubernetes v1.21 或者更高版本,v1.21之前版本的kubernetes 集群需升级至v1.21版本以上后再进行部署,v1.21 之后版本的kubernetes集群可直接部署,KingbaseES Operator默认向后兼容。
  • DNS 插件, KingbaseES集群Pod 使用 kubernetes 内部域名进行通信。当缺少kubernetes DNS插件时,会KingbaseES 集群Pod 无法互相通信。
  • StorageClass (分布式存储类)启用。
  • NTP 网络时间协议服务,为了KingbaseES Operator ,KingbaseES集群,数据库监控组件,数据库备份组件的资源的时间同步,需要集群中配置和使用NTP服务。各组件资源都依赖于准确的时间戳进行调度和操作。
  • RBAC 启用(可选)。

标准 kubernetes 集群

KingbaseES Operator 使用Custom Resource Definition (CRD) 和控制器扩展Kubernetes。使用 KingbaseES Operator 必须先创建 CRD 和控制器 。这些CRD 和控制器只需要在 kubernetes 集群上部署一次:

kubectl apply -f crd.yaml

kubectl apply -f kingbase_operator_install.yaml -n kingbase-operator-system

查看CRDs 在集群中是否创建

kubectl get crds | grep kingbase

预期输出:

# 查看到 两个 CRD 已经正确创建

backups.install.kingbase.com 2024-04-24T03:15:23Z

deploys.install.kingbase.com 2024-04-24T03:15:23Z

查看控制器部署状态,控制器默认部署的命名空间为 kingbase-operator-system

kubectl get pods -n kingbase-operator-system

预期输出:

# Pod 已经正确运行

NAME READY STATUS RESTARTS AGE

kingbase-operator-controller-manager-dfd8998d-ct5s2 1/1 Running 0 23h

部署 KingbaseES 集群和监控

在标准 kubernetes 集群上通过Kingbase Operator 部署KingbaseES 集群和 kmonitor 之前,需要配置集群参数。

配置KingbaseES 与 Kmonitor 组件

使用约束:

  • KingbaseES 集群推荐开启持久化存储,生产环境应保持持久化存储卷的启用,以保证数据不会随着Pod 的销毁而丢失。
  • Kmonitor 组件启停开关默认只在初始化部署时生效,后续更新启停状态无效。
参数说明

KingbaseES 和 kmonitor 的配置文件为 install_v1_deploy.yaml,以下是最小参数的配置示例与说明:

  • name
    • 描述:定义KingbaseES集群名称。
    • 默认值:无
    • 示例配置:

metadata:

name: kingbase-cluster # KingbaseES 集群名称

labels:

app.kubernetes.io/instance: kingbase-cluster # 控制器设置的资源标签

spec:

kingbase:

database:

relName: "kingbase-cluster" #集群内生成 statefulset ,service 资源等的命名前缀

  • replicaCount
    • 描述:定义KingbaseES集群副本的数量。
    • 默认值:1
    • 示例配置:

spec:

kingbase:

database:

replicaCount: 1

  • images. repository
    • 描述:定义容器的镜像。
    • 默认值:无
    • KingbaseES 集群镜像示例配置:

spec:

kingbase:

images:

repository: 10.10.12.227:9080/library/ kingbase_v008r006c008b0014_x86_64_single_cluster_monitor:v36

    • Kmonitor 组件镜像示例配置

spec:

addtional:

kmonitor:

repository: 10.10.12.227:9080/library/kmonitor:v2.4.6

  • additional.kmonitor.enable
    • 描述:定义KingbaseES集群副本的数量。
    • 默认值: true ,默认启用kmonitor组件, 值为false 时不启用kmonitor组件。当前值只能在部署节点阶段设置,后续修改无效。
    • 示例配置:

spec:

addtional:

kmonitor:

enable: true

  • persistence
    • 描述:定义是否开启持久化存储卷,存储卷大小,容器挂载存储卷路径等配置。
    • 默认值: 无,推荐开启持久化存储卷。
    • KingbaseES集群示例配置:

spec:

kingbase:

database:

persistence:

enabled: true # 默认开启持久化存储卷挂载

## # 存储卷挂载时的必要配置

storageclass: 存储卷类型,根据实际情况进行填写

mountPath: /var/lib/kingbase # 数据库 data 持久化路径

etcPath: /etc/cron.d # 定时任务 持久化路径。

size: 20Gi # 数据库 data 路径的持久化卷容量。

etcsize: 100Mi # etc 路径的持久化卷容量。

    • kmonitor组件示例配置:

spec:

addtional:

kmonitor:

persistence:

enabled: true # 默认开启持久化存储卷挂载

## # 存储卷挂载时的必要配置

storageclass: managed-nfs-storage # 存储卷类型,根据实际情况进行填写

mountPath: /var/lib/kingbase # 数据库 data 持久化路径

etcPath: /etc/cron.d # 定时任务 持久化路径。

size: 20Gi # 数据库 data 路径的持久化卷容量。

etcsize: 100Mi # etc 路径的持久化卷容量。

  • 数据库初始化配置
    • 描述:定义KingbaseES集群初始化时的数据库相关配置。
    • 默认值:无
    • 示例配置:

spec:

kingbase:

database:

trust_ip: 10.68.0.1 # 对应docker容器的网卡ip地址

db_user: system # 数据库 用户名

db_port: 54321 # 数据库 端口号

db_password: "12345678ab" #数据库 密码

esrep_password: Kingbaseha110 # 数据库 esrep 用户的密码

db_mode: oracle # 数据库模式 pg mysql oracle 可选

db_encoding: utf8 # 数据库 字符集编码 utf8 gbk gb2312 可选

db_case_sensitive: "true" # 大小写敏感, true 为大小写不敏感

db_file_name: "db.conf" #数据库配置文件名

配置中 spec.kingbase.database. trust_ip 可以通过如下方式进行查询:

kubectl get svc kubernetes

预期输出:

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE

kubernetes ClusterIP 10.68.0.1 <none> 443/TCP 56d

trust_ip 的设置成10.68.0.1 (CLUSTER_IP)即可,此IP 是kubernetes默认网关IP地址。

部署 KingbaseES 集群和 kmonitor

配置KingbaseES 集群与 kmonitor 组件后,开始进行部署步骤:

  1. 创建命名空间

kubectl create namespace kingbase-cluster

预期输出:

namespace/kingbase-cluster created

2. 部署KingbaseES 集群和 kmonitor 组件

kubectl apply -f install_v1_deploy.yaml -n kingbase-cluster

预期输出:

deploy.install.kingbase.com/kingbase-cluster created

3. 部署后查看 KingbaseES 集群和 kmonitor 组件 Pod 状态

kubectl get pods -n kingbase-cluster

预期输出:

NAME READY STATUS RESTARTS AGE

kingbase-kingbase-0 1/1 Running 0 5m37s

kingbase-kingbase-1 1/1 Running 0 5m21s

kingbase-monitor-kingbase-0 1/1 Running 0 5m37s

当前配置中为KingbaseES集群副本数为2, Pod(kingbase-kingbase-0)部署时默认为主节点,Pod(kingbase-kingbase-1) 及其他数据库Pod默认为备节点, Pod(kingbase-monitor-kingbase-0)是 kmonitor 组件Pod。

不同的KingbaseES 集群可以部署在相同的 namespace, 也可以是不同的namespace,集群CR 的命名空间就是KingbaseES集群的命名空间,随实际情况进行选择。

访问数据库和监控

访问数据库

KingbaseES Pod 容器中默认带有 ksql 数据库连接工具,可以通过容器内的 ksql 访问数据库集群。

使用 kubectl 命令 进入KingbaseES容器:

kubectl exec -it -n kingbase-cluster kingbase-cluster-kingbase-0 -- bash

容器内进入数据库软件安装目录并使用 ksql 访问数据库集群,默认当提示输入密码时,根据 $ DB_PASSWORD 环境变量的值输入即可。

# 进入kingbase 软件安装步骤

[root@kingbase-cluster-kingbase-0 /]# cd ${MOUNT_PATH}/bin

# 容器内可以输出 数据库密码的环境变量

[root@kingbase-cluster-kingbase-0 bin]# echo ${DB_PASSWORD}

12345678ab

[root@kingbase-cluster-kingbase-0 bin]# ./ksql -U ${DB_USER} -p ${DB_PORT} -d test -W

Password:

Type "help" for help.

test=#

访问 kmonitor 监控面板

Kmonitor 可以通过Operator 创建的 nodeport 类型的 service 对外暴露端口

使用kubectl 命令查看kmonitor service 基础信息

kubectl get service -n kingbase-cluster --selector app=kingbase-cluster-monitor-kingbase

预期输出:

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE

kingbase-cluster-monitor-service-0 NodePort 10.68.57.218 <none> 54321:31716/TCP,3000:31303/TCP,9090:31375/TCP,8500:31782/TCP

26m

通过对应NodePort 类型service kingbase-cluster-monitor-service-0的 PORT(s) 可以查看到 Pod 内端口与宿主机端口映射情况,不同kubernetes集群宿主机端口映射情况随机生成,请根据实际宿主机端口进行访问。

Pod内端口映射

kubernetes宿主机端口映射

(随机生成,以实际集群端口为准)

端口说明

54321

31716

数据库默认端口

3000

31303

Kmonitor 面板端口

9090

31375

Kmonitor Prometheus组件端口

8500

31782

Kmonitor consul 组件端口

当前集群随机生成的 kmonitor面板组件宿主机端口号为 31303

kmonitor 面板通过kubernetes node上通过http://${宿主机IP}:31303访问。默认用户名/密码 admin K1ngb@se

宿主机IP 通过kubectl 命令获取:

kubectl get nodes -o wide

预期输出:

NAME STATUS ROLES AGE VERSION INTERNAL-IP …

10.10.12.214 Ready master 56d v1.23.1 10.10.12.214 …

10.10.12.215 Ready node 56d v1.23.1 10.10.12.215 …

10.10.12.216 Ready node 56d v1.23.1 10.10.12.216 …

在列表中选取一个节点的 INTERNAL-IP 作为当前要访问的宿主机IP 即可,如列表中的 10.10.12.214 作为宿主机IP。

当前示例集群 kmonitor 登录页面面板展示:

  • 23
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值