在 KubeSphere 中部署 TiDB Operator 和 TiDB 集群

TiDB 是一个支持混合事务和分析处理 (HTAP) 工作负载的云原生、开源 NewSQL 数据库,具有水平扩缩性、强一致性以及高可用性。

本教程演示了如何在 KubeSphere 上部署 TiDB Operator 和 TiDB 集群。

准备工作

  • 您需要准备至少 3 个可调度的节点。
  • 您需要启用 OpenPitrix 系统
  • 您需要为本教程创建一个企业空间、一个项目和两个帐户(ws-adminproject-regular)。帐户 ws-admin 必须在企业空间中被赋予 workspace-admin 角色,帐户 project-regular 必须被邀请至项目中赋予 operator 角色。若还未创建好,请参考创建企业空间、项目、用户和角色

动手实验

步骤 1:安装 TiDB Operator CRD

  1. admin 身份登录 KubeSphere 的 Web 控制台,使用右下角工具箱中的 Kubectl 执行以下命令来安装 TiDB Operator CRD:

    1. kubectl apply -f https://raw.githubusercontent.com/pingcap/tidb-operator/v1.1.6/manifests/crd.yaml
  2. 预期输出如下所示:

    1. customresourcedefinition.apiextensions.k8s.io/tidbclusters.pingcap.com created
    2. customresourcedefinition.apiextensions.k8s.io/backups.pingcap.com created
    3. customresourcedefinition.apiextensions.k8s.io/restores.pingcap.com created
    4. customresourcedefinition.apiextensions.k8s.io/backupschedules.pingcap.com created
    5. customresourcedefinition.apiextensions.k8s.io/tidbmonitors.pingcap.com created
    6. customresourcedefinition.apiextensions.k8s.io/tidbinitializers.pingcap.com created
    7. customresourcedefinition.apiextensions.k8s.io/tidbclusterautoscalers.pingcap.com created

步骤 2:添加应用仓库

  1. 登出 KubeSphere,再以 ws-admin 身份登录。在企业空间中,访问应用管理下的应用仓库,然后点击添加

  2. 在出现的对话框中,输入 pingcap 作为应用仓库名称,输入 https://charts.pingcap.org 作为 PingCAP Helm 仓库的 URL。点击验证以验证 URL,如果可用,您将会在 URL 旁边看到一个绿色的对号。点击确定以继续。

  3. 将仓库成功导入到 KubeSphere 之后,它将显示在列表中。

步骤 3:部署 TiDB Operator

  1. 登出 KubeSphere,再以 project-regular 身份登录。在您的项目中,访问应用负载下的应用,点击创建

  2. 在出现的对话框中,选择从应用模板

  3. 从下拉菜单中选择 pingcap,然后点击 tidb-operator

    备注

    本教程仅演示如何部署 TiDB Operator 和 TiDB 集群。您也可以按需部署其他工具。

  4. Chart 文件选项卡,您可以直接从控制台查看配置,也可以通过点击右上角的图标以下载默认 values.yaml 文件。在版本下,从下拉菜单中选择一个版本号,点击安装

  5. 基本信息页面,确认应用名称、应用版本以及部署位置。点击下一步以继续。

  6. 应用设置页面,您可以编辑 values.yaml 文件,也可以直接点击安装使用默认配置。

  7. 等待 TiDB Operator 正常运行。

  8. 访问工作负载,可以看到为 TiDB Operator 创建的两个部署。

步骤 4:部署 TiDB 集群

部署 TiDB 集群的过程与部署 TiDB Operator 的过程相似。

  1. 访问应用负载下的应用,再次点击创建,然后选择从应用模板

  2. 在 PingCAP 仓库中,点击 tidb-cluster

  3. Chart 文件选项卡,可以查看配置和下载 values.yaml 文件。点击安装以继续。

  4. 基本信息页面,确认应用名称、应用版本和部署位置。点击下一步以继续。

  5. 一些 TiDB 组件需要持久卷。您可以运行以下命令查看存储类型。

    1. / # kubectl get sc
    2. NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
    3. csi-high-capacity-legacy csi-qingcloud Delete Immediate true 71m
    4. csi-high-perf csi-qingcloud Delete Immediate true 71m
    5. csi-ssd-enterprise csi-qingcloud Delete Immediate true 71m
    6. csi-standard (default) csi-qingcloud Delete Immediate true 71m
    7. csi-super-high-perf csi-qingcloud Delete Immediate true 71m
  6. 应用设置页面,将所有 storageClassName 字段的默认值从 local-storage 更改为您的存储类型名称。例如,您可以根据以上输出将这些默认值更改为 csi-standard

    备注

    此处仅更改字段 storageClassName 以提供外部持久化存储。若想在单个节点上部署每个 TiDB 组件(例如 TiKVPlacement Driver),请指定 nodeAffinity 字段。

  7. 点击安装,然后就可以在列表中看到安装的应用。

步骤 5:查看 TiDB 集群状态

  1. 访问应用负载下的工作负载,确认所有的 TiDB 集群部署都在正常运行。

  2. 切换到有状态副本集选项卡,可以看到 TiDB、TiKV 和 PD 均正常运行。

    备注

    TiKV 和 TiDB 会自动创建,可能要过一段时间才能在列表中显示。

  3. 点击单个有状态副本集以访问其详情页。在监控选项卡下,可以看到一段时间内以折线图显示的指标。

  4. 应用负载下的容器组中,可以看到 TiDB 集群包含两个 TiDB Pod、三个 TiKV Pod 和三个 PD Pod。

  5. 存储下的持久卷声明中,可以看到 TiKV 和 PD 都在使用持久卷。

  6. 同时,也会监控持久卷声明的使用情况。点击一个持久卷声明以访问其详情页。

  7. 在项目的概览页面,可以看到当前项目的资源使用情况列表。

步骤 6: 访问 TiDB 集群

  1. 访问应用负载下的服务,可以看到所有服务的详细信息。由于服务类型默认设置为 NodePort,因此您可以通过集群外部的 Node IP 地址进行访问。

  2. TiDB 集成了 Prometheus 和 Grafana 以监控数据库集群的性能。例如,您可以通过 <NodeIP>:<NodePort> 访问 Grafana 以查看指标。

    tidb-grafana

    备注

    根据 Kubernetes 集群部署位置的不同,您可能需要在安全组中打开端口,并配置相关的端口转发规则。