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

本文详细介绍了如何在Kubernetes集群上部署RadonDB MySQL Operator 2.1.2,包括添加Helm仓库、部署Operator和集群、校验及卸载流程,提供了一种快速实现MySQL高可用集群部署的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

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

部署版本为 RadonDB MySQL Kubernetes 2.1.2

部署准备

  • Kubernetes 集群
  • MySQL 客户端工具

部署过程

步骤 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-operatorDeployment[1]。

helm install demo radondb/mysql-operator
以下是一个简单的 Kubernetes 部署 MySQL HA 集群的示例: - 创建一个 StatefulSet 对象,用于部署 MySQL 实例: ``` apiVersion: apps/v1 kind: StatefulSet metadata: name: mysql spec: serviceName: mysql replicas: 3 selector: matchLabels: app: mysql template: metadata: labels: app: mysql spec: containers: - name: mysql image: mysql:5.7 env: - name: MYSQL_ROOT_PASSWORD valueFrom: secretKeyRef: name: mysql-secrets key: password ports: - containerPort: 3306 name: mysql volumeMounts: - name: mysql-persistent-storage mountPath: /var/lib/mysql volumeClaimTemplates: - metadata: name: mysql-persistent-storage spec: accessModes: [ "ReadWriteOnce" ] resources: requests: storage: 1Gi ``` - 创建一个 Service 对象,用于访问 MySQL 实例: ``` apiVersion: v1 kind: Service metadata: name: mysql spec: selector: app: mysql ports: - name: mysql port: 3306 targetPort: mysql ``` - 创建两个 ConfigMap 对象,用于配置 MySQL 主从复制: ``` apiVersion: v1 kind: ConfigMap metadata: name: mysql-master data: init.sql: | CREATE USER 'repl'@'%' IDENTIFIED BY 'repl'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%'; FLUSH PRIVILEGES; CHANGE MASTER TO MASTER_HOST='mysql-0.mysql', MASTER_USER='repl', MASTER_PASSWORD='repl'; --- apiVersion: v1 kind: ConfigMap metadata: name: mysql-slave data: init.sql: | CHANGE MASTER TO MASTER_HOST='mysql-0.mysql', MASTER_USER='repl', MASTER_PASSWORD='repl'; ``` - 创建一个 StatefulSet 对象,用于部署 MySQL 主从复制的代理: ``` apiVersion: apps/v1 kind: StatefulSet metadata: name: mysql-replicas spec: serviceName: mysql-replicas replicas: 2 selector: matchLabels: app: mysql-replicas template: metadata: labels: app: mysql-replicas spec: containers: - name: mysql-replicas image: percona/percona-xtradb-cluster-operator:1.6.0 env: - name: BOOTSTRAP value: "0" - name: MYSQL_PASSWORD valueFrom: secretKeyRef: name: mysql-secrets key: password - name: XTRABACKUP_PASSWORD valueFrom: secretKeyRef: name: mysql-secrets key: xtrabackup-password command: ["/bin/bash", "-c", "while true; do sleep 30; done;"] volumeMounts: - name: mysql-master-init mountPath: /etc/mysql-init - name: mysql-slave-init mountPath: /etc/mysql-slave-init volumeClaimTemplates: - metadata: name: mysql-persistent-storage spec: accessModes: [ "ReadWriteOnce" ] resources: requests: storage: 1Gi volumeClaimTemplates: - metadata: name: mysql-persistent-storage spec: accessModes: [ "ReadWriteOnce" ] resources: requests: storage: 1Gi volumeClaimTemplates: - metadata: name: mysql-persistent-storage spec: accessModes: [ "ReadWriteOnce" ] resources: requests: storage: 1Gi volumeClaimTemplates: - metadata: name: mysql-persistent-storage spec: accessModes: [ "ReadWriteOnce" ] resources: requests: storage: 1Gi volumeClaimTemplates: - metadata: name: mysql-persistent-storage spec: accessModes: [ "ReadWriteOnce" ] resources: requests: storage: 1Gi volumeClaimTemplates: - metadata: name: mysql-persistent-storage spec: accessModes: [ "ReadWriteOnce" ] resources: requests: storage: 1Gi volumeClaimTemplates: - metadata: name: mysql-persistent-storage spec: accessModes: [ "ReadWriteOnce" ] resources: requests: storage: 1Gi volumeClaimTemplates: - metadata: name: mysql-persistent-storage spec: accessModes: [ "ReadWriteOnce" ] resources: requests: storage: 1Gi volumeClaimTemplates: - metadata: name: mysql-persistent-storage spec: accessModes: [ "ReadWriteOnce" ] resources: requests: storage: 1Gi ``` - 创建一个 Service 对象,用于访问 MySQL 主从复制的代理: ``` apiVersion: v1 kind: Service metadata: name: mysql-replicas spec: selector: app: mysql-replicas ports: - name: mysql port: 3306 targetPort: mysql ``` 这些 YAML 文件可以通过 kubectl apply 命令来部署Kubernetes 集群中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值