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

2023年 7月 9日 45.3k 0

KubeSphere 部署 TiDB 云原生数据库

TiDB 简介

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

KubeSphere 部署 TiDB 云原生分布式数据库-2

KubeSphere 简介

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

KubeSphere 部署 TiDB 云原生分布式数据库-3

部署环境准备

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

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

  • 登录青云控制台:https://console.qingcloud.com/,点击左侧容器平台,选择 KubeSphere,点击创建并选择合适的集群规格:
  • KubeSphere 部署 TiDB 云原生分布式数据库-4

  • 创建完成后登录到 KubeSphere 平台界面:
  • KubeSphere 部署 TiDB 云原生分布式数据库-5

  • 点击下方的 Web Kubectl 集群客户端命令行工具,连接到 Kubectl 命令行界面。执行以下命令安装 TiDB Operator CRD:
  • kubectl apply -f https://raw.githubusercontent.com/pingcap/TiDB-Operator/v1.1.6/manifests/crd.yaml
    
  • 执行后的返回结果如下:
  • KubeSphere 部署 TiDB 云原生分布式数据库-6

  • 点击左上角平台管理,选择访问控制,新建企业空间,这里命名为 dev-workspace
  • KubeSphere 部署 TiDB 云原生分布式数据库-7

  • 进入企业空间,选择应用仓库,添加一个 TiDB 的应用仓库:
  • KubeSphere 部署 TiDB 云原生分布式数据库-8

  • 将 PingCap 官方 Helm 仓库添加到 KubeSphere 容器平台,Helm 仓库地址如下:
  • https://charts.pingcap.org
    
  • 添加方式如下:
  • KubeSphere 部署 TiDB 云原生分布式数据库-9

    部署 TiDB-Operator

  • 首选创建一个项目(Namespace)用于运行 TiDB 集群:
  • KubeSphere 部署 TiDB 云原生分布式数据库-10

  • 创建完成后点击进入项目,选择应用,部署新应用
  • KubeSphere 部署 TiDB 云原生分布式数据库-11

  • 选择来自应用模板:
  • KubeSphere 部署 TiDB 云原生分布式数据库-12

  • 选择 pingcap,该仓库包含了多个 helm chart,当前主要部署 TiDB-Operatortidb-cluster
  • KubeSphere 部署 TiDB 云原生分布式数据库-13

  • 点击 TiDB-Operator 进入 Chart 详情页,点击配置文件可查看或下载默认的 values.yaml,选择版本,点击部署:
  • KubeSphere 部署 TiDB 云原生分布式数据库-14

  • 配置应用名称并选择应用版本,确认应用部署位置:
  • KubeSphere 部署 TiDB 云原生分布式数据库-15

  • 继续下一步,该步骤可以在界面直接编辑 values.yaml 文件,自定义配置,当前保留默认即可:
  • KubeSphere 部署 TiDB 云原生分布式数据库-16

  • 点击部署,等待应用状态变为活跃:
  • KubeSphere 部署 TiDB 云原生分布式数据库-17

  • 点击工作负载(Deployment),查看 TiDB-Operator 部署了 2 个 Deployment 类型资源:
  • KubeSphere 部署 TiDB 云原生分布式数据库-18

    部署 TiDB-Cluster

  • TiDB-Operator 部署完成后,可以继续部署 TiDB-Cluster。与部署 TiDB-Operator 操作相同,选择左侧应用,点击 tidb-cluster:
  • KubeSphere 部署 TiDB 云原生分布式数据库-19

  • 切换到配置文件,选择版本,下载 values.yaml到本地:
  • KubeSphere 部署 TiDB 云原生分布式数据库-20

  • 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 覆盖应用配置文本框中的内容,当然也可以手动编辑配置文件逐个替换:
  • KubeSphere 部署 TiDB 云原生分布式数据库-2

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

    查看 TiDB 集群监控

  • TiDB 集群部署后需要一定时间完成初始化,选择工作负载,查看 Deployment 无状态应用:
  • KubeSphere 部署 TiDB 云原生分布式数据库-23

  • 查看有状态副本集(StatefulSets),其中 tidb、tikv 和 pd 等组件都为有状态应用:
  • KubeSphere 部署 TiDB 云原生分布式数据库-24

  • 在 KubeSphere 监控面板查看 tidb 负载情况,可以看到 CPU、内存、网络流出速率有明显的变化:
  • KubeSphere 部署 TiDB 云原生分布式数据库-25

  • 在 KubeSphere 监控面板查看 TiKV 负载情况:
  • KubeSphere 部署 TiDB 云原生分布式数据库-26

  • 查看容器组(Pod)列表,tidb 集群包含了 3 个 pd、2 个 tidb 以及 3 个 tikv 组件:
  • KubeSphere 部署 TiDB 云原生分布式数据库-27

  • 点击存储管理,查看存储卷,其中 tikv 和 pd 这 2 个组件使用了持久化存储:
  • KubeSphere 部署 TiDB 云原生分布式数据库-28

  • 查看某个存储卷用量信息,以 tikv 为例,可以看到当前存储的存储容量和剩余容量等监控数据。
  • KubeSphere 部署 TiDB 云原生分布式数据库-29

  • 在 KubeSphere 项目首页查看 tidb-cluster 项目中资源用量排行:
  • KubeSphere 部署 TiDB 云原生分布式数据库-30

    访问 TiDB 集群

  • 点击左侧服务,查看 TiDB 集群创建和暴露的服务信息。
  • KubeSphere 部署 TiDB 云原生分布式数据库-31

  • 其中 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 部署 TiDB 云原生分布式数据库-32

    总结

    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/

    相关文章

    KubeSphere 部署向量数据库 Milvus 实战指南
    探索 Kubernetes 持久化存储之 Longhorn 初窥门径
    征服 Docker 镜像访问限制!KubeSphere v3.4.1 成功部署全攻略
    那些年在 Terraform 上吃到的糖和踩过的坑
    无需 Kubernetes 测试 Kubernetes 网络实现
    Kubernetes v1.31 中的移除和主要变更

    发布评论