TiDB 是 PingCAP 公司自主研发的开源分布式关系型数据库 TiDB,为企业要害业务打造,具备「分布式强一致性事务、在线弹性程度扩大、故障自复原的高可用、跨数据中心多活」等外围个性,助力企业最大化施展数据价值,开释企业增长空间。
KubeSphere 是在 Kubernetes 之上构建的以利用为核心的多租户容器平台,齐全开源,反对多云与多集群治理,提供全栈的 IT 自动化运维的能力,简化企业的 DevOps 工作流。KubeSphere 提供了运维敌对的向导式操作界面,帮忙企业疾速构建一个弱小和功能丰富的容器云平台。
本文将介绍如何在 KubeSphere 上部署 TiDB。
部署环境筹备
KubeSphere 是由青云 QingCloud 开源的容器平台,反对在任何基础设施上装置部署。在青云私有云上反对一键部署 KubeSphere(QKE)。
上面以在青云云平台疾速启用 KubeSphere 容器平台为例部署 TiDB 分布式数据库,至多须要筹备 3 个可调度的 node 节点。你也能够在任何 Kubernetes 集群或 Linux 零碎上装置 KubeSphere,能够点击【浏览原文】参考 KubeSphere 官网文档。
1\. 登录青云控制台:https://console.qingcloud.com/,点击左侧容器平台,抉择 KubeSphere,点击创立并抉择适合的集群规格:
2\. 创立实现后登录到 KubeSphere 平台界面:
3\. 点击下方的 Web Kubectl 集群客户端命令行工具,连贯到 Kubectl 命令行界面。执行以下命令装置 TiDB Operator CRD:
kubectl apply -f https://raw.githubusercontent.com/pingcap/tidb-operator/v1.1.6/manifests/crd.yaml
4\. 执行后的返回后果如下:
5\. 点击左上角平台治理,抉择访问控制,新建企业空间,这里命名为 dev-workspace
6\. 进入企业空间,抉择利用仓库,增加一个 TiDB 的利用仓库:
7\. 将 PingCAP 官网 Helm 仓库增加到 KubeSphere 容器平台,Helm 仓库地址如下:
https://charts.pingcap.org
8\. 增加形式如下:
部署 TiDB-Operator
1\. 首选创立一个我的项目(namespace)用于运行 TiDB 集群:
2\. 创立实现后点击进入我的项目,抉择利用,部署新利用:
3\. 抉择来自利用模板:
4\. 抉择 PingCAP,该仓库蕴含了多个 Helm Chart,以后次要部署 TiDB Operator 和 TiDB Cluster。
5\. 点击 TiDB Operator 进入 Chart 详情页,点击配置文件可查看或下载默认的 values.yaml,抉择版本,点击部署:
6\. 配置利用名称并抉择利用版本,确认利用部署地位:
7\. 持续下一步,该步骤能够在界面间接编辑 values.yaml 文件,自定义配置,以后保留默认即可:
8\. 点击部署,期待利用状态变为沉闷:
9\. 点击工作负载(Deployment),查看 TiDB Operator 部署了 2 个 Deployment 类型资源:
部署 TiDB-Cluster
1.TiDB Operator 部署实现后,能够持续部署 TiDB Cluster。与部署 TiDB Operator 操作雷同,抉择左侧利用,点击 TiDB Cluster:
2\. 切换到配置文件,抉择版本,下载 values.yaml 到本地:
3\. 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
4\. 这里抉择 csi-standard 类型,values.yaml 中的 StorageClassName 字段默认配置为 local-storage。因而,在下载的 yaml 文件中间接替换所有的 local-storage 字段为 csi-standard。在最初一步应用批改后的 values.yaml 笼罩利用配置文本框中的内容,当然也能够手动编辑配置文件一一替换:
5\. 这里仅批改 storageClassName 字段用于援用内部长久存储,如果须要将 TiDB、TiKV 或 PD 组件调度到独立节点,可参考 NodeAffinity 相干参数进行批改。点击部署,将 TiDB Cluster 部署到容器平台,最终在利用列表中能够看到如下 2 个利用:
查看 TiDB 集群监控
1\. TiDB 集群部署后须要肯定工夫实现初始化,抉择工作负载,查看 Deployment 无状态利用:
2\. 查看有状态正本集(StatefulSets),其中 TiDB、TiKV 和 PD 等组件都为有状态利用:
3\. 在 KubeSphere 监控面板查看 TiDB 负载状况,能够看到 CPU、内存、网络流出速率有显著的变动:
4\. 在 KubeSphere 监控面板查看 TiKV 负载状况:
5\. 查看容器组(Pod)列表,TiDB 集群蕴含了 3 个 PD、2 个 TiDB 以及 3 个 TiKV 组件:
6\. 点击存储管理,查看存储卷,其中 TiKV 和 PD 这 2 个组件应用了长久化存储:
7\. 查看某个存储卷用量信息,以 TiKV 为例,能够看到以后存储的存储容量和残余容量等监控数据。
8\. 在 KubeSphere 我的项目首页查看 TiDB Cluster 我的项目中资源用量排行:
拜访 TiDB 集群
1\. 点击左侧服务,查看 TiDB 集群创立和裸露的服务信息。
2\. 其中 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>
查看 Grafana 监控面板
另外,TiDB 自带了 Prometheus 和 Grafana,用于数据库集群的性能监控,能够看到 Grafana 界面的 Serivce 3000 端口同样绑定了 NodePort 端口。拜访 Grafana UI,查看某个指标:
总结
KubeSphere 容器平台对于云原生利用部署十分敌对,对于还不相熟 Kubernetes 的利用开发者而又心愿通过在界面简略配置实现 TiDB 集群的部署,能够参考以上步骤疾速上手。咱们将在下一期的文章中,为大家分享另一种部署玩法:将 TiDB 利用上架到 KubeSphere 利用商店实现真正的一键部署。
另外,TiDB 还能够联合 KubeSphere 的多集群联邦性能,部署 TiDB 利用时可一键散发 TiDB 不同的组件正本到不同基础设施环境的多个 Kubernetes 集群,实现跨集群、跨区域的高可用。如果大家感兴趣,咱们将在后续的文章中为大家分享 TiDB 在 KubeSphere 实现多集群联邦的混合云部署架构。