mysql operator_在 k8s 上部署 mysql operator

本文详细介绍了如何使用 mysql-operator 在 Kubernetes 集群中部署高可用的 MySQL StatefulSet。首先,介绍了环境准备和代码编译过程,包括修改代码以支持 MySQL 5.7.0+ 版本。接着,展示了如何部署 mysql-operator,包括构建镜像、创建 Deployment 和所需 RBAC 权限。然后,创建了3节点的 MySQL 集群,包含1个主节点和2个从节点,使用 Kubernetes Local PV 进行持久化存储。最后,通过创建服务、ingress-controller 和 ingress 规则,使外部能够访问 MySQL 集群。
摘要由CSDN通过智能技术生成

本文通过 mysql-operator 在kubernetes集群部署高可用的mysql statefulset。

环境准备

本文使用的开源 operator 项目 mysql-operator 配死只支持 mysql 8.0.11 以上的版本,改了下代码,支持 5.7.0 以上版本,项目地址,本文部署的是 mysql-5.7.26,使用的 dockerhub 上的镜像 mysql/mysql-server:5.7.26。

代码编译

git clone 下载该项目,进入到代码目录,执行sh hack/build.sh,编译代码得到二进制文件 mysql-agent 和 mysql-operator,将二进制文件放入 bin/linux_amd64,执行docker build -f docker/mysql-agent/Dockerfile -t $IMAGE_NAME_AGENT .,docker build -f docker/mysql-operator/Dockerfile -t $IMAGE_NAME_OPERATOR .构建镜像,mysql-operator 生成的镜像为 operator 的镜像,mysql-agent 生成的是镜像,在创建mysql服务时,作为sidecar和mysql-server容器起在同一个pod中。

部署 operator

先根据 文档 部署 mysql-operator 的 Deployment,文档中是使用 helm 安装,不希望安装 helm 和 tiller 的话,可以只安装一个 helm 客户端,进入到代码目录,再执行helm template --name mysql-operator mysql-operator生成部署所需要的yaml文件,然后直接执行kubectl apply -f mysql-operator.yaml创建 operator。这个yaml创建了operator所需的CRD类型,operator 的 Deployment 和 operator 所需的 RBAC 权限等。

# change directory into mysql-operator

cd mysql-operator

# generate mysql-operator.yaml

helm template --name mysql-operator mysql-operator > mysql-operator.yaml

# deploy on kubernetes

kubectl apply -f mysql-operator.yaml

# deployed.

[root@localhost]$ kubectl get deploy -n mysql-operator

NAME READY UP-TO-DATE AVAILABLE AGE

mysql-operator 1/1 1 1 2d5h

创建 mysql 集群

本文创建的集群为3节点的 mysql,一个节点为 master,二个为 slave,master节点可读写,slave节点为只读,使用 kubernetes Local PV 作持久化存储。

首先,为每个节点创建一个PV,Local PV 需要定义nodeAffinity,约束创建的节点。

apiVersion: v1

kind: PersistentVolume

metadata:

name: mypv0

spec:

capacity:

storage: 1Gi

volumeMode: Filesystem

accessModes:

- ReadWriteOnce

persistentVolumeReclaimPolicy: Delete

storageClassName: mysql-storage

local:

path: /data/mysql-data

nodeAffinity:

required:

nodeSelectorTerms:

- matchExpressions:

- key: kubernetes.io/hostname

operator: In

values:

- 192.168.0.1

---

apiVersion: v1

kind: PersistentVolume

metadata:

name: mypv1

spec:

capacity:

storage: 1Gi

volumeMode: Filesystem

accessModes:

- ReadWriteOnce

persistentVolumeReclaimPolicy: Delete

storageClassName: mysql-storage

local:

path: /data/mysql-data

nodeAffinity:

required:

nodeSelectorTerms:

- matchExpressions:

- key: kubernetes.io/hostname

operator: In

values:

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值