基於 KubeSphere 部署 TiDB 雲原生分佈式數據庫


12 月 19 日,KubeSphere 開源社區聯合 CNCF 將在北京舉辦一場年度的雲原生 Meetup,聚焦用戶落地實踐的乾貨分享,以及現場動手實踐的 Workshop 和即興主題演講,現場有來自 AWS、中通、微衆銀行的多位重量級講師進行分享,歡迎大家點擊文末的「閱讀原文」或掃描二維碼免費報名 Meetup!

TiDB 簡介

TiDB 是 PingCAP 公司自主設計、研發的開源分佈式關係型數據庫,具備水平擴容或者縮容、金融級高可用、實時 HTAP、雲原生的分佈式數據庫、兼容 MySQL 5.7 協議和 MySQL 生態等重要特性。TiDB 適合高可用、強一致要求較高、數據規模較大等各種應用場景。

TiDB 架構

KubeSphere 簡介

KubeSphere 是在 Kubernetes 之上構建的以應用爲中心的多租戶容器平臺,完全開源,支持多雲與多集羣管理,提供全棧的 IT 自動化運維的能力,簡化企業的 DevOps 工作流。KubeSphere 提供了運維友好的嚮導式操作界面,幫助企業快速構建一個強大和功能豐富的容器雲平臺。

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 平臺界面:
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. 執行後的返回結果如下:
Kubectl 命令行界面
  1. 點擊左上角平臺管理,選擇訪問控制,新建企業空間,這裏命名爲 dev-workspace
新建企業空間
  1. 進入企業空間,選擇應用倉庫,添加一個 TiDB 的應用倉庫:
添加 TiDB 應用倉庫
  1. 將 PingCap 官方 Helm 倉庫添加到 KubeSphere 容器平臺,Helm 倉庫地址如下:
   
   
   
https://charts.pingcap.org

  1. 添加方式如下:
添加 TiDB 應用倉庫

部署 TiDB-Operator

  1. 首選創建一個項目(Namespace)用於運行 TiDB 集羣:
部署 TiDB-Operator
  1. 創建完成後點擊進入項目,選擇應用,部署新應用
部署新應用
  1. 選擇來自應用模板:
應用模板
  1. 選擇 pingcap,該倉庫包含了多個 helm chart,當前主要部署 TiDB-Operatortidb-cluster
helm chart 列表
  1. 點擊 TiDB-Operator 進入 Chart 詳情頁,點擊配置文件可查看或下載默認的 values.yaml,選擇版本,點擊部署:
TiDB-Operator
  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到本地:
選擇 TiDB Cluster 版本
  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 覆蓋應用配置文本框中的內容,當然也可以手動編輯配置文件逐個替換:
查看與修改 Yaml
  1. 這裏僅修改 storageClassName 字段用於引用外部持久存儲,如果需要將 tidb、tikv或 pd 組件調度到獨立節點,可參考 nodeAffinity 相關參數進行修改。點擊部署,將 tidb cluster 部署到容器平臺,最終在應用列表中可以看到如下 2 個應用:
查看應用部署狀態

查看 TiDB 集羣監控

  1. TiDB 集羣部署後需要一定時間完成初始化,選擇工作負載,查看 Deployment 無狀態應用:
查看 Deployment 運行狀態
  1. 查看有狀態副本集(StatefulSets),其中 tidb、tikv 和 pd 等組件都爲有狀態應用:
查看 TiDB 與 TiKV 組件狀態
  1. 在 KubeSphere 監控面板查看 tidb 負載情況,可以看到 CPU、內存、網絡流出速率有明顯的變化:
查看 TiDB 組件監控
  1. 在 KubeSphere 監控面板查看 TiKV 負載情況:
查看 TiKV 組件 監控
  1. 查看容器組(Pod)列表,tidb 集羣包含了 3 個 pd、2 個 tidb 以及 3 個 tikv 組件:
查看 Pod 狀態
  1. 點擊存儲管理,查看存儲卷,其中 tikv 和 pd 這 2 個組件使用了持久化存儲:
確認存儲卷掛載情況
  1. 查看某個存儲卷用量信息,以 tikv 爲例,可以看到當前存儲的存儲容量和剩餘容量等監控數據。
查看存儲卷監控
  1. 在 KubeSphere 項目首頁查看 tidb-cluster 項目中資源用量排行:
查看 tidb-cluster 項目中 資源用量

訪問 TiDB 集羣

  1. 點擊左側服務,查看 TiDB 集羣創建和暴露的服務信息。
查看 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,查看某個指標:

Grafana 監控 TiDB 性能指標


總結

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/

免費報名 Meetup

  • 時間:12 月 19 日下午 13:00 - 18:00
  • 地點:aiospace 機遇空間
  • 地址:北京市朝陽區798藝術區D區798西街
  • 報名方式:點擊「閱讀原文」或掃描二維碼


 KubeSphere

KubeSphere (https://kubesphere.io)是在 Kubernetes 之上構建的開源容器混合雲,提供全棧的 IT 自動化運維的能力,簡化企業的 DevOps 工作流。

KubeSphere 已被 Aqara 、紫金保險、中通、中國人保壽險、中國太平保險、中移金科、Radore、ZaloPay 等海內外數萬家企業採用。KubeSphere 提供了開發者友嚮導式操作界面和豐富的企業級功能,包括Kubernetes DevOps (CI/CD) (Service Mesh)GPU support 等功能,幫助企業快速構建一個強大和功能豐富的容器雲平臺。


本文分享自微信公衆號 - KubeSphere(gh_4660e44db839)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章