Kubernetes之搭建mysql主从复制
1. 准备工作
1. 使用glusterfs作为数据存储
2. 在gluster集群中创建指定卷
gluster volume create k8s_mysql replica 2 node1:/gluster_data/k8s_mysql node2:/gluster_data/k8s_mysql node3:/gluster_data/k8s_mysql node4:/gluster_data/k8s_mysql
3. 客户端挂载指定卷
mount -t glusterfs node1:/k8s_mysql /data/k8s_mysql
4. 使用客户端创建多个文件夹
cd /data/k8s_mysql/ ; mkdir mysql_pv{1..3}
2. 部署过程
1. 创建glusterFS端点定义,指定对应的gluster集群的IP地址
apiVersion: v1
kind: Endpoints
metadata:
name: glusterfs-cluster
namespace: default
subsets:
- addresses:
- ip: 192.168.2.191
- ip: 192.168.2.192
- ip: 192.168.2.193
- ip: 192.168.2.194
ports:
- port: 24007
protocol: TCP
2. 创建glusterfs的service
kind: Service apiVersion: v1 metadata: name: glusterfs-cluster spec: ports: - port: 24007
3. 为每个mysql创建一个pv
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv01
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: mysql
glusterfs:
endpoints: "glusterfs-cluster"
path: "/k8s_mysql/mysql_pv1"
readOnly: false
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv02
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: mysql
glusterfs:
endpoints: "glusterfs-cluster"
path: "/k8s_mysql/mysql_pv2"
readOnly: false
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv03
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: mysql
glusterfs:
endpoints: "glusterfs-cluster"
path: "/k8s_mysql/mysql_pv3"
readOnly: false
4. 配置mysql-configmap.yaml文件
apiVersion: v1
kind: ConfigMap
metadata:
name: mysql
labels:
app: mysql
data:
master.cnf: |
# Apply this config only on the master.
[mysqld]
log-bin=mysql-bin
skip-name-resolve
slave.cnf: |
# Apply this config only on slaves.
[mysqld]
log-bin=mysql-bin
skip-name-resolve
super-read-only
5. 创建mysql密码secret文件
apiVersion: v1
kind: Secret
metadata:
name: mysql-secret
labels:
app: mysql
type: Opaque
stringData:
username: root
password: 123.com
6. 创建mysql-service.yaml,提供读写分离
# Headless service for stable DNS entries of StatefulSet members.
apiVersion: v1
kind: Service
metadata:
name: mysql
labels:
app: mysql
spec:
ports:
- name: mysql
port: 3306
clusterIP: None
selector:
app: mysql
---
# Client service for connecting to any MySQL instance for reads.
# For writes, you must instead connect to the master: mysql-0.mysql.
apiVersion: v1
kind: Service
metadata:
name: mysql-read
labels:
app: mysql
spec:
ports:
- name: mysql
port: 3306
selector:
app: mysql
7. 使用statefulset搭建mysql主从复制
4.
3. 测试主从复制
一往无前虎山行,拨开云雾见光明

浙公网安备 33010602011771号