❝12 月 19 日,KubeSphere 開源社區聯合 CNCF 將在北京舉辦一場年度的雲原生 Meetup,聚焦用戶落地實踐的乾貨分享,以及現場動手實踐的 Workshop 和即興主題演講,現場有來自 AWS、中通、微衆銀行的多位重量級講師進行分享,歡迎大家點擊文末的「閱讀原文」或掃描二維碼免費報名 Meetup!
❞
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)。
-
登錄青雲 QingCloud 控制檯: https://console.qingcloud.com/,點擊左側容器平臺,選擇 KubeSphere,點擊創建並選擇合適的集羣規格:
-
創建完成後登錄到 KubeSphere 平臺界面:
-
點擊下方的 Web Kubectl 集羣客戶端命令行工具,連接到 Kubectl 命令行界面。執行以下命令安裝 TiDB Operator CRD:
kubectl apply -f https://raw.githubusercontent.com/pingcap/TiDB-Operator/v1.1.6/manifests/crd.yaml
4. 執行後的返回結果如下:
-
點擊左上角平臺管理,選擇訪問控制,新建企業空間,這裏命名爲 dev-workspace
-
進入企業空間,選擇應用倉庫,添加一個 TiDB 的應用倉庫:
-
將 PingCap 官方 Helm 倉庫添加到 KubeSphere 容器平臺,Helm 倉庫地址如下:
https://charts.pingcap.org
-
添加方式如下:
部署 TiDB-Operator
-
首選創建一個項目(Namespace)用於運行 TiDB 集羣:
-
創建完成後點擊進入項目,選擇應用,部署新應用
-
選擇來自應用模板:
-
選擇 pingcap
,該倉庫包含了多個 helm chart,當前主要部署TiDB-Operator
和tidb-cluster
。
-
點擊 TiDB-Operator
進入 Chart 詳情頁,點擊配置文件可查看或下載默認的values.yaml
,選擇版本,點擊部署:
-
配置應用名稱並選擇應用版本,確認應用部署位置:
-
繼續下一步,該步驟可以在界面直接編輯 values.yaml
文件,自定義配置,當前保留默認即可:
-
點擊部署,等待應用狀態變爲活躍:
-
點擊工作負載(Deployment),查看 TiDB-Operator 部署了 2 個 Deployment 類型資源:
部署 TiDB-Cluster
-
TiDB-Operator 部署完成後,可以繼續部署 TiDB-Cluster。與部署 TiDB-Operator 操作相同,選擇左側應用,點擊 tidb-cluster:
-
切換到配置文件,選擇版本,下載 values.yaml
到本地:
-
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
覆蓋應用配置文本框中的內容,當然也可以手動編輯配置文件逐個替換:
-
這裏僅修改 storageClassName
字段用於引用外部持久存儲,如果需要將 tidb、tikv或 pd 組件調度到獨立節點,可參考 nodeAffinity 相關參數進行修改。點擊部署,將 tidb cluster 部署到容器平臺,最終在應用列表中可以看到如下 2 個應用:
查看 TiDB 集羣監控
-
TiDB 集羣部署後需要一定時間完成初始化,選擇工作負載,查看 Deployment 無狀態應用:
-
查看有狀態副本集(StatefulSets),其中 tidb、tikv 和 pd 等組件都爲有狀態應用:
-
在 KubeSphere 監控面板查看 tidb 負載情況,可以看到 CPU、內存、網絡流出速率有明顯的變化:
-
在 KubeSphere 監控面板查看 TiKV 負載情況:
-
查看容器組(Pod)列表,tidb 集羣包含了 3 個 pd、2 個 tidb 以及 3 個 tikv 組件:
-
點擊存儲管理,查看存儲卷,其中 tikv 和 pd 這 2 個組件使用了持久化存儲:
-
查看某個存儲卷用量信息,以 tikv 爲例,可以看到當前存儲的存儲容量和剩餘容量等監控數據。
-
在 KubeSphere 項目首頁查看 tidb-cluster 項目中資源用量排行:
訪問 TiDB 集羣
-
點擊左側服務,查看 TiDB 集羣創建和暴露的服務信息。
-
其中 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 容器平臺對於雲原生應用部署非常友好,對於還不熟悉 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源創計劃”,歡迎正在閱讀的你也加入,一起分享。