TiDB 简介
TiDB 是 PingCAP 公司自主设计、研发的开源分布式关系型数据库,具备水平扩容或者缩容、金融级高可用、实时 HTAP、云原生的分布式数据库、兼容 MySQL 5.7 协议和 MySQL 生态等重要特性。TiDB 适合高可用、强一致要求较高、数据规模较大等各种应用场景。
KubeSphere 简介
KubeSphere 是在 Kubernetes 之上构建的以应用为中心的多租户容器平台,完全开源,支持多云与多集群管理,提供全栈的 IT 自动化运维的能力,简化企业的 DevOps 工作流。KubeSphere 提供了运维友好的向导式操作界面,帮助企业快速构建一个强大和功能丰富的容器云平台。
部署环境准备
KubeSphere 是由青云 QingCloud 开源的容器平台,支持在任何基础设施上安装部署。在青云公有云上支持一键部署 KubeSphere(QKE)。
下面以在青云云平台快速启用 KubeSphere 容器平台为例部署 TiDB 分布式数据库,至少需要准备 3 个可调度的 node 节点。你也可以在任何 Kubernetes 集群或 Linux 系统上安装 KubeSphere,可以参考 KubeSphere 官方文档。
kubectl apply -f https://raw.githubusercontent.com/pingcap/TiDB-Operator/v1.1.6/manifests/crd.yaml
dev-workspace
https://charts.pingcap.org
部署 TiDB-Operator
pingcap
,该仓库包含了多个 helm chart,当前主要部署 TiDB-Operator
和tidb-cluster
。TiDB-Operator
进入 Chart 详情页,点击配置文件可查看或下载默认的 values.yaml
,选择版本,点击部署:values.yaml
文件,自定义配置,当前保留默认即可:部署 TiDB-Cluster
values.yaml
到本地:/ # 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
values.yaml
中的 StorageClassName
字段默认配置为 local-storage
。因此,在下载的 yaml 文件中直接替换所有的 local-storage
字段为 csi-standard
。在最后一步使用修改后的 values.yaml
覆盖应用配置文本框中的内容,当然也可以手动编辑配置文件逐个替换:storageClassName
字段用于引用外部持久存储,如果需要将 tidb、tikv或 pd 组件调度到独立节点,可参考 nodeAffinity 相关参数进行修改。点击部署,将 tidb cluster 部署到容器平台,最终在应用列表中可以看到如下 2 个应用:查看 TiDB 集群监控
访问 TiDB 集群
[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 实现多集群联邦的混合云部署架构。
参考
KubeSphere GitHub: https://github.com/kubesphere/kubesphere
TiDB GitHub: https://github.com/pingcap/TiDB
TiDB Operator 快速入门: https://github.com/pingcap/docs-TiDB-Operator/blob/master/zh/get-started.md
TiDB-Operator 文档: https://docs.pingcap.com/tidb-in-kubernetes/stable/TiDB-Operator-overview
KubeSphere Introduction: https://kubesphere.io/docs/introduction/what-is-kubesphere/
KubeSphere Documentation: https://kubesphere.io/docs/