程潤科
資料庫研發工程師,目前從事 RadonDB MySQL Kubernetes 研發,熱衷於研究資料庫核心、K8s 相關技術。
張莉梅
高階文件工程師,目前負責資料庫產品文件開發、維護和管理工作。
本文將演示如何在 KubeSphere[1] 上部署 RadonDB MySQL on Kubernetes 2.1.2,快速實現高可用的 MySQL on K8s。
部署準備
- 確保已啟用 OpenPitrix 系統[2]
- 建立一個企業空間、一個專案和一個使用者供本操作使用[3]
- 安裝過程中,請以
admin
身份登入控制檯,在企業空間demo
中的demo-project
專案中進行操作 - 確保 KubeSphere 專案閘道器已開啟外網訪問[4]
動手實驗
1、新增應用倉庫
- 登入 KubeSphere 的 Web 控制檯。
- 在
demo
企業空間中,進入應用管理下的應用倉庫頁面,點選新增,彈出倉庫配置對話方塊。 - 輸入倉庫名稱和倉庫 URL。
- 輸入
radondb-mysql-operator
作為應用倉庫名稱。 - 輸入
https://radondb.github.io/radondb-mysql-kubernetes/
作為倉庫的 URL,並點選驗證以驗證 URL,在 URL 旁邊呈現一個綠色的對號,驗證通過後,點選確定繼續。
- 輸入
- 將倉庫成功匯入到 KubeSphere 之後,在列表中即可檢視 RadonDB MySQL 倉庫。
2、部署 RadonDB MySQL Operator
- 在 demo-project 專案中,進入應用負載下的應用頁面,點選部署新應用。
- 在對話方塊中,選擇來自應用模板,進入應用模版頁面。
- 從下拉選單中選擇 radondb-mysql-operator 應用倉庫。
- 點選 mysql-operator 應用圖示,檢視和配置應用資訊。
- 在配置檔案選項卡,可檢視和編輯 values.yaml 配置檔案;在版本列框區域,可檢視和選擇版本號。
- 點選部署,進入 mysql-operator 應用基本資訊配置頁面,確認應用名稱、應用版本以及配置部署位置。
- 點選下一步,進入 mysql-operator 應用配置頁面,確認 values.yaml 配置資訊,可編輯檔案修改配置。
- 點選部署,返回應用模版頁面。待應用狀態切換為執行中,則應用部署成功。
更新 Operator
若已在 KubeSphere 部署過歷史版本 Operator,可以選擇如下方式更新到最新版本。
- 在 KubeSphere 平臺刪除歷史版本 Operator 應用。
-
參考如上步驟,安裝最新版本 Operator 。
-
執行如下命令更新 CRD 版本。如下示例為更新 CRD 到 2.1.2 版。
kubectl apply -f https://raw.githubusercontent.com/radondb/radondb-mysql-kubernetes/v2.1.2/charts/mysql-operator/crds/mysql.radondb.com_mysqlclusters.yaml
3、部署 RadonDB MySQL 叢集
可任選一個 RadonDB MySQL 配置示例[5] 部署,或自定義配置部署。
以 mysql_v1alpha1_mysqlcluster.yaml
模版為例,建立一個 RadonDB MySQL 叢集。
- 在右下角 工具箱中選擇 Kubectl 工具,開啟終端視窗。
- 執行以下命令,安裝 RadonDB MySQL 叢集。
kubectl apply -f https://github.com/radondb/radondb-mysql-kubernetes/releases/latest/download/mysql_v1alpha1_mysqlcluster.yaml --namespace=<project_name>
注意
未指定專案時,叢集將被預設安裝在 kubesphere-controls-system
專案中。若需指定專案,安裝命令需新增 --namespace=<project_name>
。
預期結果
$ kubectl apply -f https://github.com/radondb/radondb-mysql-kubernetes/releases/latest/download/mysql_v1alpha1_mysqlcluster.yaml --namespace=demo-project
mysqlcluster.mysql.radondb.com/sample created
- 叢集建立成果後,執行如下命令,可檢視 RadonDB MySQL 叢集節點服務。
kubectl get statefulset,svc
預期結果
$ kubectl get statefulset,svc
NAME READY AGE
statefulset.apps/sample-mysql 3/3 10m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/default-http-backend ClusterIP 10.96.69.202 <none> 80/TCP 3h2m
service/sample-follower ClusterIP 10.96.9.162 <none> 3306/TCP 10m
service/sample-leader ClusterIP 10.96.255.188 <none> 3306/TCP 10m
service/sample-mysql ClusterIP None <none> 3306/TCP 10m
部署校驗
在 demo-project
專案中,檢視 RadonDB MySQL 叢集狀態。
- 進入 應用負載 下的 服務 頁面,可檢視叢集服務資訊。
- 進入 應用負載 下的 工作負載 頁面,點選 有狀態副本集,可檢視叢集狀態。進入一個 有狀態副本集 詳情頁面,點選 監控 標籤頁,可檢視一定時間範圍內的叢集指標。
- 進入 應用負載 下的 容器組 頁面,可檢視叢集節點執行狀態。
- 進入 儲存 下的 儲存卷 頁面,可檢視儲存卷。檢視某個儲存卷用量資訊,以其中一個資料節點為例,可以看到當前儲存的儲存容量和剩餘容量等監控資料。
至此,完成在 KubeSphere 中部署 RadonDB MySQL 叢集。
參考引用
[1]:KubeSphere:https://kubesphere.com.cn
[2]:OpenPitrix:https://kubesphere.io/zh/docs/pluggable-components/app-store
[3]:建立操作:https://kubesphere.io/zh/docs/quick-start/create-workspace-and-project
[4]:專案閘道器:https://kubesphere.io/zh/docs/project-administration/project-gateway
[5]:配置示例:https://github.com/radondb/radondb-mysql-kubernetes/blob/main/config/samples