本次项目为自己玩玩
1、构建镜像
# 配置master /etc/mysql/my.cnf
[root@k8s-m-01 ~]# mkdir -pv /root/mysql/master
[root@k8s-m-01 ~]# cd /root/mysql/master
[root@k8s-m-01 ~]# vim Dockerfile
FROM mysql:5.7
ADD my.cnf /etc/mysql/my.cnf
[root@k8s-m-01 ~]# vim my.cnf
[mysql]
socket=/var/lib/mysql/mysql.sock
[mysqld]
user=mysql
port=3306
binlog_format=mixed
log_bin=mysql-bin
socket=/var/lib/mysql/mysql.sock
server_id=1
sync_binlog=1
log-slave-updates=on
# 配置savle /etc/mysql/my.cnf
[root@k8s-m-01 ~]# mkdir -pv /root/mysql/savle
[root@k8s-m-01 ~]# cd /root/mysql/savle
[root@k8s-m-01 ~]# vim Dockerfile
FROM mysql:5.7
ADD my.cnf /etc/mysql/my.cnf
[root@k8s-m-01 ~]# vim my.cnf
[mysql]
socket=/var/lib/mysql/mysql.sock
[mysqld]
user=mysql
port=3306
binlog_format=mixed
log_bin=mysql-bin
socket=/var/lib/mysql/mysql.sock
server_id=2
read-only=1
# 创建镜像仓库
在阿里云镜像仓库中创建mysql-master和mysql-savle两个仓库
# 构建镜像
# 构建master镜像
[root@k8s-m-01 ~/mysql/master]# docker build -t registry.cn-hangzhou.aliyuncs.com/alvinos/mysql-master:v1 .
Sending build context to Docker daemon 3.072kB
Step 1/2 : FROM mysql:5.7
---> a70d36bc331a
Step 2/2 : ADD my.cnf /etc/mysql/my.cnf
---> 4d70fb217ff7
Successfully built 4d70fb217ff7
Successfully tagged registry.cn-hangzhou.aliyuncs.com/alvinos/mysql-master:v1
# 构建salve镜像
[root@k8s-m-01 ~/mysql/salve]# docker build -t registry.cn-hangzhou.aliyuncs.com/alvinos/mysql-savle:v1 .
Sending build context to Docker daemon 3.072kB
Step 1/2 : FROM mysql:5.7
---> a70d36bc331a
Step 2/2 : ADD my.cnf /etc/mysql/my.cnf
---> df6a73e92015
Successfully built df6a73e92015
Successfully tagged registry.cn-hangzhou.aliyuncs.com/alvinos/mysql-savle:v1
# 推送镜像到仓库
[root@k8s-m-01 ~/mysql/salve]# docker login --username=yangyang091022 registry.cn-hangzhou.aliyuncs.com
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
[root@k8s-m-01 ~/mysql/salve]# docker push registry.cn-hangzhou.aliyuncs.com/alvinos/mysql-master:v1
[root@k8s-m-01 ~/mysql/salve]# docker push registry.cn-hangzhou.aliyuncs.com/alvinos/mysql-salve:v1
2、配置master节点
# 部署master节点
# 创建master节点主从复制用户
有一个问题 数据库的id怎么办,在构建镜像的时候 加入启动脚本
FROM registry.cn-hangzhou.aliyuncs.com/alvinos/mysql-master:v1
ADD start /root/
WORKDIR /root
CMD "./start"
namespace
kind: Namespace
apiVersion: v1
metadata:
name: mysql-cluster
kind: Service
apiVersion: v1
metadata:
name: mysql-cluster-master-svc
namespace: mysql-cluster
spec:
ports:
- port: 3306
targetPort: 3306
name: mysql-cluster-master-tcp
selector:
app: mysql-cluster
deploy: mysql-cluster-master
---
kind: StatefulSet
apiVersion: apps/v1
metadata:
name: mysql-cluster-master
namespace: mysql-cluster
spec:
selector:
matchLabels:
app: mysql-cluster
deploy: mysql-cluster-master
serviceName: mysql-cluster-master-svc
template:
metadata:
labels:
app: mysql-cluster
deploy: mysql-cluster-master
spec:
imagePullSecrets:
- name: "myregistrykey"
containers:
- name: mysql
image: registry.cn-hangzhou.aliyuncs.com/alvinos/mysql-master:v1
env:
- name: MYSQL_ROOT_PASSWORD
value: "123456"
livenessProbe:
tcpSocket:
port: 3306
initialDelaySeconds: 30
periodSeconds: 2
readinessProbe:
tcpSocket:
port: 3306
initialDelaySeconds: 30
periodSeconds: 2
volumeMounts:
- mountPath: /var/lib/mysql
name: mysql-cluster-master-data
volumes:
- name: mysql-cluster-master-data
persistentVolumeClaim:
claimName: mysql-cluster-master-data-pvc
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
namespace: mysql-cluster
name: mysql-cluster-master-data-pvc
spec:
storageClassName: nfs-client
accessModes:
- "ReadWriteMany"
resources:
requests:
storage: "500Gi"
kind: Secret
apiVersion: v1
metadata:
name: mysql-cluster-master-secret
namespace: mysql-cluster
data:
passwd:
---
kind: Job
apiVersion: batch/v1
metadata:
namespace: mysql-cluster
name: mysql-cluster-master-create-user-job
spec:
template:
metadata:
labels:
app: mysql-cluster
deploy: mysql-cluster-master-job
spec:
imagePullSecrets:
- name: "myregistrykey"
restartPolicy: OnFailure
containers:
- name: mysql
image: registry.cn-hangzhou.aliyuncs.com/alvinos/mysql-master:v1
env:
- name: MYSQL_ROOT_PASSWORD
value: "123456"
command:
- "/bin/bash"
- "-c"
- |
/usr/bin/mysql -hmysql-cluster-master-svc.mysql-cluster.svc.cluster.local -uroot -pcat /opt/passwd -e "GRANT REPLICATION SLAVE ON *.* TO 'mysql'@'%' IDENTIFIED BY 'mysql';FLUSH PRIVILEGES;"
volumeMounts:
- mountPath: /opt
name: mysql-cluster-master-secret
volumes:
- name: mysql-cluster-master-secret
secret:
secretName: mysql-cluster-master-secret
items:
- key: passwd
path: passwd





