文章详情

短信预约信息系统项目管理师 报名、考试、查分时间动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

容器化 | 在 K8s 上部署 RadonDB MySQL Operator 和集群

2022-04-02 06:38

关注

容器化 | 在 K8s 上部署 RadonDB MySQL Operator 和集群

作者:程润科 数据库研发工程师

编辑:张莉梅 高级文档工程师

视频:钱芬 高级测试工程师

本文将演示在 Kubernetes 上部署 RadonDB MySQL Kubernetes 2.X(Operator)的步骤,快速实现 MySQL 高可用集群部署,以及部署集群的校验和卸载方式。

部署版本为 RadonDB MySQL Kubernetes 2.1.2。

步骤 1: 添加 Helm 仓库

添加 Helm 仓库 radondb

helm repo add radondb https://radondb.github.io/radondb-mysql-kubernetes/

校验仓库信息,可查看到名为 radondb/mysql-operator 的 chart。

$ helm search repo
NAME                            CHART VERSION   APP VERSION                     DESCRIPTION                 
radondb/mysql-operator          0.1.0           v2.1.2                          Open Source,High Availability Cluster,based on MySQL                     

步骤 2: 部署 Operator

以下指定 release 名为 demo , 创建一个名为 demo-mysql-operator 的 Deployment[1]。

helm install demo radondb/mysql-operator

在这一步中,默认将同时创建集群所需的 CRD[2]。

步骤 3: 部署 RadonDB MySQL 集群

执行以下指令,以默认参数为 CRD mysqlclusters.mysql.radondb.com 创建一个实例,即创建 RadonDB MySQL 集群。

kubectl apply -f https://github.com/radondb/radondb-mysql-kubernetes/releases/latest/download/mysql_v1alpha1_mysqlcluster.yaml

自定义集群部署参数,可参考 配置参数[3]。

校验 RadonDB MySQL Operator

查看 demo 的 Deployment 和对应监控服务,回显如下信息则部署成功。

$ kubectl get deployment,svc
NAME                  READY   UP-TO-DATE   AVAILABLE   AGE
demo-mysql-operator   1/1     1            1           7h50m

NAME                             TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
service/mysql-operator-metrics   ClusterIP   10.96.142.22            8443/TCP   8h

校验 RadonDB MySQL 集群

执行如下命令,将查看到如下 CRD。

$ kubectl get crd | grep mysql.radondb.com
backups.mysql.radondb.com                             2021-11-02T07:00:01Z
mysqlclusters.mysql.radondb.com                       2021-11-02T07:00:01Z
mysqlusers.mysql.radondb.com                          2021-11-02T07:00:01Z

以默认部署为例,执行如下命令将查看到名为 sample-mysql 的三节点 RadonDB MySQL 集群及用于访问节点的服务。

$ kubectl get statefulset,svc
NAME           READY   AGE
sample-mysql   3/3     7h33m

NAME                             TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
service/sample-follower          ClusterIP   10.96.131.84            3306/TCP   7h37m
service/sample-leader            ClusterIP   10.96.111.214           3306/TCP   7h37m
service/sample-mysql             ClusterIP   None                    3306/TCP   7h37m

在 Kubernetes 集群内,支持使用 service_name 或者 clusterIP 方式,访问 RadonDB MySQL。

RadonDB MySQL 提供 Leader 和 Follower 两种服务,分别用于客户端访问主从节点。Leader 服务始终指向主节点(可读写),Follower 服务始终指向从节点(只读)。

file

RadonDB MySQL 集群架构图

以下为客户端与数据库在同一 Kubernetes 集群内,访问 RadonDB MySQL 的方式。

当客户端的与数据库部署在不同 Kubernetes 集群,请参考 Kubernetes 访问集群中的应用程序[4],配置端口转发、负载均衡等连接方式。

ClusterIP 方式

RadonDB MySQL 的高可用读写 IP 指向 Leader 服务的 clusterIP,高可用只读 IP 指向 Follower 服务的 clusterIP

mysql -h  -P  -u  -p

以下示例用户名为 radondb_usr, Leader 服务的 clusterIP 为 10.10.128.136 ,连接示例如下:

mysql -h 10.10.128.136 -P 3306 -u radondb_usr -p

service_name 方式

Kubernetes 集群的 Pod 之间支持通过 service_name 方式访问 RadonDB MySQL。

service_name 方式不适用于从 Kubernetes 集群的物理机访问数据库 Pod。
连接 Leader 服务(RadonDB MySQL 主节点)

mysql -h . -u  -p

用户名为 radondb_usr,release 名为 sample,RadonDB MySQL 命名空间为 default ,连接示例如下:

mysql -h sample-leader.default -u radondb_usr -p

连接 Follower 服务(RadonDB MySQL 从节点)

mysql -h . -u  -p

用户名为 radondb_usr,release 名为 sample,RadonDB MySQL 命名空间

为 default ,连接示例如下:

mysql -h sample-follower.default -u radondb_usr -p  

卸载 Operator

卸载当前命名空间下 release 名为 demo 的 RadonDB MySQL Operator。

helm delete demo

卸载集群

卸载 release 名为 sample RadonDB MySQL 集群。

kubectl delete mysqlclusters.mysql.radondb.com sample

卸载自定义资源

kubectl delete customresourcedefinitions.apiextensions.k8s.io mysqlclusters.mysql.radondb.com
kubectl delete customresourcedefinitions.apiextensions.k8s.io mysqlusers.mysql.radondb.com
kubectl delete customresourcedefinitions.apiextensions.k8s.io backups.mysql.radondb.com

引用参考

  1. Deployment:https://kubernetes.io/zh/docs/concepts/workloads/controllers/deployment/
  2. CRD:https://kubernetes.io/zh/docs/concepts/extend-kubernetes/api-extension/custom-resources/
  3. 配置参数:https://github.com/radondb/radondb-mysql-kubernetes/blob/main/docs/zh-cn/config_para.md
  4. Kubernetes 访问集群中的应用程序:https://kubernetes.io/zh/docs/tasks/access-application-cluster/

*相关部署视频可至 RadonDB 开源社区 B 站账号观看(搜索:RadonDB)

原文地址:https://www.cnblogs.com/radondb/archive/2022/03/25/16053874.html

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯