kubesphere部署tidb云原生分布式数据库

it2023-11-06  69

TiDB简介

TiDB 是 PingCAP 公司自主设计、研发的开源分布式关系型数据库,具备水平扩容或者缩容、金融级高可用、实时 HTAP、云原生的分布式数据库、兼容 MySQL 5.7 协议和 MySQL 生态等重要特性。TiDB 适合高可用、强一致要求较高、数据规模较大等各种应用场景。

kubeSphere简介

KubeSphere 是在 Kubernetes 之上构建的以应用为中心的多租户容器平台,完全开源,支持多云与多集群管理,提供全栈的 IT 自动化运维的能力,简化企业的 DevOps 工作流。KubeSphere 提供了运维友好的向导式操作界面,帮助企业快速构建一个强大和功能丰富的容器云平台。

部署环境准备

KubeSphere是青云开源的容器平台,除了支持在本地kubernetes集群独立部署外,青云公有云上也支持一键部署kubesphere,并且与开源版本相比操作界面和功能体验完全一致。

下面以在青云环境快速启用容器平台为例部署tidb分布式数据库,至少需要准备3个可调度的node节点。

登录青云控制台:https://console.qingcloud.com/

点击左侧容器平台,选择KubeSphere,点击创建并选择合适的集群规格:

创建完成后登录到kubesphere管理界面:

点击下方的kubectl集群客户端命令行工具,连接到命令行界面;

执行以下命令安装TiDB Operator CRD:

kubectl apply -f https://raw.githubusercontent.com/pingcap/tidb-operator/v1.1.6/manifests/crd.yaml

执行结果如下:

点击左上角平台管理,选择访问控制,新建企业空间,这里命名为dev-workspace

进入企业空间,选择应用仓库,添加仓库

将pingcap官方helm仓库添加到容器平台,地址如下:

https://charts.pingcap.org

添加方式如下:

部署tidb-operator

tidb部署参考:

https://github.com/pingcap/docs-tidb-operator/blob/master/zh/get-started.md https://docs.pingcap.com/zh/tidb-in-kubernetes/stable/prerequisites/

首选创建项目(namespace)用于运行tidb集群:

创建完成后点击进入项目,选择应用,部署新应用

选择来自应用模板:

切换到pingcap,该仓库包含了多个helm chart,当前主要部署tidb-operator和tidb-cluster,其他为辅助工具,可自行视情况部署。

点击tidb-operator进入chat,点击配置文件可查看或下载默认的values.yaml,选择版本,点击部署:

配置应用名称并选择应用版本,确认应用部署位置:

继续下一步,该步骤可以直接编辑values.yaml文件,自定义配置,当前默认即可:

点击部署,等待应用状态变为活跃:

点击工作负载(deployment),查看tidb-operator部署了2个deployment类型资源:

部署tidb-cluster

tidb-operator部署完成后可以继续部署tidb-cluster。

与部署tidb-operator操作相同,选择左侧应用,点击tidb-cluster:

切换到配置文件,选择版本,下载values.yaml到本地:

TiDB cluster中部分组件需要持久存储卷,青云平台提供了以下类型storageclass:

/ # kubectl get sc NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE csi-high-capacity-legacy csi-qingcloud Delete Immediate true 101m csi-high-perf csi-qingcloud Delete Immediate true 101m csi-ssd-enterprise csi-qingcloud Delete Immediate true 101m csi-standard (default) csi-qingcloud Delete Immediate true 101m csi-super-high-perf csi-qingcloud Delete Immediate true 101m

这里选择csi-standard类型,values.yaml中的storageClassName字段默认配置为local-storage。

在下载的yaml文件中直接替换所有的local-storage字段为csi-standard,。

在最后一步使用修改后的values.yaml覆盖应用配置文本框中的内容,当然也可以手动编辑配置文件逐个替换:

这里仅修改storageClassName字段用于引用外部持久存储,如果需要将tidb、tikv或pd组件调度到独立节点,可参考nodeAffinity相关参数进行修改。

点击部署,将tidb cluster部署到容器平台,最终在应用列表中可以看到如下2个应用:

查看tidb集群状态

tidb集群部署后需要一定时间完成初始化,选择工作负载,查看无状态应用:

查看有状态副本集(statefulset),其中tidb、tikv和pd都为有状态应用:

查看tidb负载情况:

查看tikv负载情况:

查看容器组(pod),tidb集群包含了3个pd、2个tidb以及3个tikv:

点击存储管理,查看存储卷,其中tikv和pd这2个组件使用了持久存储:

查看某个存储卷用量信息,以tikv为例:

tidb-cluster项目中资源用量排行:

访问tidb集群

点击左侧服务,查看tibd集群创建和暴露的服务信息

其中tidb 4000端口绑定的服务类型为nodeport,直接可以在集群外通过nodeIP访问.

测试使用mysql客户端连接数据库

[root@k8s-master1 ~]# docker run -it --rm mysql bash [root@0d7cf9d2173e:/# mysql -h 192.168.1.102 -P 32682 -u root Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 201 Server version: 5.7.25-TiDB-v4.0.6 TiDB Server (Apache License 2.0) Community Edition, MySQL 5.7 compatible Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> show databases; +--------------------+ | Database | +--------------------+ | INFORMATION_SCHEMA | | METRICS_SCHEMA | | PERFORMANCE_SCHEMA | | mysql | | test | +--------------------+ 5 rows in set (0.01 sec) mysql>

另外tidb 自带了prometheus和grafana,用于数据库集群的性能监控,可以看到grafana的serivce 3000端口同样绑定了nodeport端口;

访问grafana UI,查看某个指标:

上传TiDB到应用商店

添加公网 helm 仓库到kubesphere容器平台适合有外网访问权限的情况,kubesphere也支持上传打包后的helm chat配置文件。

安装helm工具

version=v3.3.1 curl -LO https://repo.huaweicloud.com/helm/${version}/helm-${version}-linux-amd64.tar.gz tar -zxvf helm-${version}-linux-amd64.tar.gz mv linux-amd64/helm /usr/local/bin/helm && rm -rf linux-amd64

添加pingcap tidb helm仓库

helm repo add pingcap https://charts.pingcap.org/

查看helm仓库包含的组件

# helm search repo pingcap --version=v1.1.6 NAME CHART VERSION APP VERSION DESCRIPTION pingcap/tidb-backup v1.1.6 A Helm chart for TiDB Backup or Restore pingcap/tidb-cluster v1.1.6 A Helm chart for TiDB Cluster pingcap/tidb-drainer v1.1.6 A Helm chart for TiDB Binlog drainer. pingcap/tidb-lightning v1.1.6 A Helm chart for TiDB Lightning pingcap/tidb-operator v1.1.6 v1.1.6 tidb-operator Helm chart for Kubernetes pingcap/tikv-importer release-1.1 A Helm chart for TiKV Importer

下载需要的chats到本地:

helm pull pingcap/tidb-operator --version=v1.1.6 helm pull pingcap/tidb-cluster --version=v1.1.6

查看拉取到本地的helm chart:

# ls | grep tidb tidb-cluster-v1.1.6.tgz tidb-operator-v1.1.6.tgz

登录kubesphere web console,点击工作台,选择访问控制,进入企业空间,选择应用管理,应用模板,上传模板:

上传完成后如下图:

此时在选择应用部署时选择来自企业空间即可,部署方式与导入helm仓库一致:

手动上传的helm chat 还支持发布到应用商店,共享给其他企业空间或项目使用,流程如下:

点击应用模板,选择tidb应用,展开后点击提交审核:

切换到管理员用户,点击左上角平台管理,应用商店管理 选择应用审核,选择右侧审核通过:

再次回到普通用户,选择应用模板,进入tidb应用,展开发现此时应用可以发布到商店

发布后点击左上角应用商店,在应用商店中即可看到上架的tidb应用:

备注: TiDB可以结合kubesphere多集群联邦功能,部署应用时可一键分发tidb组件副本到不同集群,实现跨集群、跨区域高可用。

最新回复(0)