• RadonDB
  • 容器化 | 在 KubeSphere 中部署 MySQL 集群

本文将演示如何在 KubeSphere[1] 上部署 RadonDB MySQL on Kubernetes 2.1.2,快速实现高可用的 MySQL on K8s。

部署准备

  • 确保已启用 OpenPitrix 系统[2]

  • 创建一个企业空间、一个项目和一个用户供本操作使用[3]

  • 安装过程中,请以admin 身份登录控制台,在企业空间 demo 中的 demo-project 项目中进行操作

  • 确保 KubeSphere 项目网关已开启外网访问[4]

动手实验

1、添加应用仓库

  1. 登录 KubeSphere 的 Web 控制台。

  2. 在 demo 企业空间中,进入应用管理下的应用仓库页面,点击添加,弹出仓库配置对话框。

  3. 输入仓库名称和仓库 URL。

    • 输入 radondb-mysql-operator 作为应用仓库名称。

    • 输入 https://radondb.github.io/radondb-mysql-kubernetes/ 作为仓库的 URL,并点击验证以验证 URL,在 URL 旁边呈现一个绿色的对号,验证通过后,点击确定继续。

  4. 将仓库成功导入到 KubeSphere 之后,在列表中即可查看 RadonDB MySQL 仓库。

image.png

2、部署 RadonDB MySQL Operator

  1. 在 demo-project 项目中,进入应用负载下的应用页面,点击部署新应用。

  2. 在对话框中,选择来自应用模板,进入应用模版页面。

  3. 从下拉菜单中选择 radondb-mysql-operator 应用仓库。

  4. 点击 mysql-operator 应用图标,查看和配置应用信息。

image.png

  1. 在配置文件选项卡,可查看和编辑 values.yaml 配置文件;在版本列框区域,可查看和选择版本号。

image.png

  1. 点击部署,进入 mysql-operator 应用基本信息配置页面,确认应用名称、应用版本以及配置部署位置。

  2. 点击下一步,进入 mysql-operator 应用配置页面,确认 values.yaml 配置信息,可编辑文件修改配置。

image.png

  1. 点击部署,返回应用模版页面。待应用状态切换为运行中,则应用部署成功。

image.png

更新 Operator

若已在 KubeSphere 部署过历史版本 Operator,可以选择如下方式更新到最新版本。

  1. 在 KubeSphere 平台删除历史版本 Operator 应用。

image.png

  1. 参考如上步骤,安装最新版本 Operator 。

  2. 执行如下命令更新 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 集群。

  1. 在右下角 工具箱中选择 Kubectl 工具,打开终端窗口。

  2. 执行以下命令,安装 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
  1. 集群创建成果后,执行如下命令,可查看 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 集群状态。

  1. 进入 应用负载 下的 服务 页面,可查看集群服务信息。

image.png

  1. 进入 应用负载 下的 工作负载 页面,点击 有状态副本集,可查看集群状态。进入一个 有状态副本集 详情页面,点击 监控 标签页,可查看一定时间范围内的集群指标。

image.png

  1. 进入 应用负载 下的 容器组 页面,可查看集群节点运行状态。

image.png

  1. 进入 存储 下的 存储卷 页面,可查看存储卷。查看某个存储卷用量信息,以其中一个数据节点为例,可以看到当前存储的存储容量和剩余容量等监控数据。

image.png

至此,完成在 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

25 天 后

我在部署 RadonDB MySQL 时,想使用mysql8.0,修改了 mysql_v1alpha1_mysqlcluster.yaml 中的 mysqlVersion: 为 “8.0”,部署完成后发现依旧是5.7,。在查看 mysql-operator 的manager pod日志时,发现报错: ERROR mysqlcluster currently we do not support mysql 5.6 or earlier version, default mysql version option should be 5.7 or 8.0 {“error”: “Invalid mysql version option:8.0”} 。这样子的报错是否说明支持8.0的部署。

后续在查看了radondb-mysql-kubernetes/mysqlcluster/mysqlcluster.go 以及 radondb-mysql-kubernetes/utils/constants.go 中的代码,发现只存在5.7版本的map映射,并没有8.0

不知道是否是bug,还是该版本不支持 8.0 的部署?

    Thank you for your attention to RadonDB MySQL, Support for MySQL 8.0 is work in progress.

    It won’t take long !

      Changego 非常感谢您对 RadonDB MySQL Kubernetes 的关注,支持 MySQL 8.0 得版本(v2.1.4)预计下个月发布 😀 邀请您加入社区微信群,我们会在群里实时发布社区最新信息(添加小助手微信:radondb)。同时欢迎持续关注GitHub仓库:https://github.com/radondb/radondb-mysql-kubernetes

      3 个月 后

      按照流程往下走,遇到这个报错,请问这个问题需要怎么处理呢?