「如何实现流动式软件发布」线上课堂开课啦,快来报名参与课堂抽奖吧~ 了解详情
写点什么

​基于 KubeSphere 部署 TiDB 云原生分布式数据库

2020 年 12 月 16 日

​基于 KubeSphere 部署 TiDB 云原生分布式数据库

12 月 19 日,KubeSphere 开源社区联合 CNCF 将在北京举办一场年度的云原生 Meetup,聚焦用户落地实践的干货分享,以及现场动手实践的 Workshop 和即兴主题演讲,现场有来自 AWS、中通、微众银行的多位重量级讲师进行分享。


TiDB 简介


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



KubeSphere 简介


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



部署环境准备


KubeSphere 是由青云 QingCloud 开源的容器混合云,支持在任何基础设施上安装部署,也支持通过 QingCloud 公有云一键部署 KubeSphere(QKE)。


下面以 QingCloud 云平台快速启用 KubeSphere 容器平台为例部署 TiDB 分布式数据库,至少需要准备 3 个可调度的 node 节点。你也可以在任何 Kubernetes 集群或 Linux 系统上安装 KubeSphere,可以参考 KubeSphere 官方文档 (kubesphere.io/docs)。


  1. 登录青云 QingCloud 控制台:https://console.qingcloud.com/,点击左侧容器平台,选择 KubeSphere,点击创建并选择合适的集群规格:



  1. 创建完成后登录到 KubeSphere 平台界面:



  1. 点击下方的 Web Kubectl 集群客户端命令行工具,连接到 Kubectl 命令行界面。执行以下命令安装 TiDB Operator CRD:


kubectl apply -f https://raw.githubusercontent.com/pingcap/TiDB-Operator/v1.1.6/manifests/crd.yaml
复制代码


4. 执行后的返回结果如下:



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



  1. 进入企业空间,选择应用仓库,添加一个 TiDB 的应用仓库:



  1. 将 PingCap 官方 Helm 仓库添加到 KubeSphere 容器平台,Helm 仓库地址如下:


https://charts.pingcap.org
复制代码


  1. 添加方式如下:



部署 TiDB-Operator


  1. 首选创建一个项目(Namespace)用于运行 TiDB 集群:



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



  1. 选择来自应用模板:



  1. 选择 pingcap,该仓库包含了多个 helm chart,当前主要部署 TiDB-Operatortidb-cluster



  1. 点击 TiDB-Operator 进入 Chart 详情页,点击配置文件可查看或下载默认的 values.yaml,选择版本,点击部署:



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



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



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



  1. 点击工作负载(Deployment),查看 TiDB-Operator 部署了 2 个 Deployment 类型资源:



部署 TiDB-Cluster


  1. TiDB-Operator 部署完成后,可以继续部署 TiDB-Cluster。与部署 TiDB-Operator 操作相同,选择左侧应用,点击 tidb-cluster:



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



  1. TiDB Cluster 中部分组件需要持久存储卷,青云公有云平台提供了以下几种类型的 StorageClass:


/ # kubectl get scNAME                       PROVISIONER     RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGEcsi-high-capacity-legacy   csi-qingcloud   Delete          Immediate           true                   101mcsi-high-perf              csi-qingcloud   Delete          Immediate           true                   101mcsi-ssd-enterprise         csi-qingcloud   Delete          Immediate           true                   101mcsi-standard (default)     csi-qingcloud   Delete          Immediate           true                   101mcsi-super-high-perf        csi-qingcloud   Delete          Immediate           true                   101m
复制代码


  1. 这里选择 csi-standard 类型,values.yaml 中的 StorageClassName 字段默认配置为 local-storage。因此,在下载的 yaml 文件中直接替换所有的 local-storage 字段为 csi-standard。在最后一步使用修改后的 values.yaml 覆盖应用配置文本框中的内容,当然也可以手动编辑配置文件逐个替换:



  1. 这里仅修改 storageClassName 字段用于引用外部持久存储,如果需要将 tidb、tikv 或 pd 组件调度到独立节点,可参考 nodeAffinity 相关参数进行修改。点击部署,将 tidb cluster 部署到容器平台,最终在应用列表中可以看到如下 2 个应用:



查看 TiDB 集群监控


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



  1. 查看有状态副本集(StatefulSets),其中 tidb、tikv 和 pd 等组件都为有状态应用:



  1. 在 KubeSphere 监控面板查看 tidb 负载情况,可以看到 CPU、内存、网络流出速率有明显的变化:



  1. 在 KubeSphere 监控面板查看 TiKV 负载情况:



  1. 查看容器组(Pod)列表,tidb 集群包含了 3 个 pd、2 个 tidb 以及 3 个 tikv 组件:



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



  1. 查看某个存储卷用量信息,以 tikv 为例,可以看到当前存储的存储容量和剩余容量等监控数据。



  1. 在 KubeSphere 项目首页查看 tidb-cluster 项目中资源用量排行:



访问 TiDB 集群


  1. 点击左侧服务,查看 TiDB 集群创建和暴露的服务信息。



  1. 其中 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 201Server 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 itsaffiliates. Other names may be trademarks of their respectiveowners.
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


KubeSphere (https://kubesphere.io)是在 Kubernetes 之上构建的开源容器混合云,提供全栈的 IT 自动化运维的能力,简化企业的 DevOps 工作流。


KubeSphere 已被 Aqara 智能家居、本来生活、新浪、华夏银行、四川航空、国药集团、微众银行、紫金保险、中通、中国人保寿险、中国太平保险、中移金科、Radore、ZaloPay 等海内外数万家企业采用。


KubeSphere 提供了开发者友好的向导式操作界面和丰富的企业级功能,包括多云与多集群管理、Kubernetes 资源管理、DevOps (CI/CD)、应用生命周期管理、微服务治理 (Service Mesh)、多租户管理、监控日志、告警通知、存储与网络管理、GPU support 等功能,帮助企业快速构建一个强大和功能丰富的容器云平台。



头图:Unsplash

作者:KubeSphere

原文基于 KubeSphere 部署 TiDB 云原生分布式数据库

来源:KubeSphere - 微信公众号 [ID:gh_4660e44db839]

转载:著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


2020 年 12 月 16 日 19:042104

评论

发布
暂无评论
发现更多内容

全网最详细XSS跨站脚本攻击,不是过来打死我!!

网络安全学海

程序员 网络安全 信息安全 XSS 漏洞修复

JavaScript学习(十一)---RegExp对象

空城机

JavaScript 前端 6月日更

起诉书!慕课网你敢抄袭,我就敢起诉你!

十三

Java 知识产权 开源项目 维权

12种mysql常见错误总结 +分析示例

我是阿沐

MySQL 大厂面试 常见问题

全球云计算大会|TcaplusDB一举斩获优秀解决方案奖

数据人er

数据库 nosql tencentdb TcaplusDB

基于 Web 引擎扩展技术的 RTC 混合开发框架实践

白玉兰开源

前端 前端框架

JAVA 面向对象 (十三)-- 关键字static

加百利

Java 6 月日更

代码管理工具

正向成长

git svn

带你认识9种常用卷积神经网络

华为云开发者社区

神经网络 深度学习 卷积神经网络 图像 卷积

在线sitemap链接提取工具

入门小站

工具

冰泉奶茶香牙膏好不好?奶茶控的宝藏牙膏就是它

Geek_50a546

30分钟接入SDK 融云是如何让开发者做到开箱即用的?

融云 RongCloud

数据结构——顺序表

若尘

数据结构 六月日更

EasyRecovery——一款专业的数据恢复软件

淋雨

文件恢复 Easyrecovery破解 免费恢复软件 硬盘数据恢复

APP 开发技术如何进行选型 ?

HaiJun

大前端 App 技术选型 APP开发

为什么switch的case没有break不行

叫我阿柒啊

Switch case break

AI论文解读:基于Transformer的多目标跟踪方法TrackFormer

华为云开发者社区

预测 Transformer 多目标跟踪 TrackFormer 跟踪目标

从2021钉峰会,看钉钉生态背后的强大赋能力

ToB行业头条

钉钉

Rust从0到1-自动化测试-测试组织

rust 单元测试 集成测试 自动化测试

计算机网络的 89 个核心概念

cxuan

后端 计算机网络 网络

使用 Scala 宏解决对象转换

GrowingIO技术专栏

scala protobuf 元编程 macro

前端 JavaScript 中的三种 for 循环语句总结

编程三昧

JavaScript 前端 for循环

使用SpringCloud的openFeign组件踩坑纪实

小江

dubbo Feign spring-cloud

可视化搭建的一些思考和实践

白玉兰开源

页面制作的15个CSS技巧

devpoint

CSS css3 Flex 6 月日更

浩若烟海事半功倍|利用Docker容器技术构建自动化分布式web测试集群Selenium Grid

刘悦的技术博客

Docker Python3 测试 单元测试 测试环境 selenium

Linux之nl命令

入门小站

Linux

一步步设计版本控制系统

YiYu

git 版本控制 版本管理

[译] D8 类库脱糖

Antway

6 月日更

容器化 | 在 Kubernetes 上部署 RadonDB MySQL 集群

RadonDB开源社区

MySQL Kubernetes 容器化

网络攻防学习笔记 Day57

穿过生命散发芬芳

网络攻防 6月日更

​基于 KubeSphere 部署 TiDB 云原生分布式数据库-InfoQ