0
点赞
收藏
分享

微信扫一扫

K8S部署mysql 5.7.39实践

       k8s部署MySQL无外乎要解决两个问题,第一就是数据的持久存储问题,第二配置文件的同步问题。

下面要围绕这两方面的问题进行阐述

一、数据的持久存储问题

(一)PV的yml文件

apiVersion: v1
kind: PersistentVolume
metadata:
name: mysql-pv
spec:
capacity:
storage: 8Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: nfs
nfs:
path: /home/nfsdata/mysql-pv
server: 192.168.10.8

(二)PVC的yml文件

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mysql-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 8Gi
storageClassName: nfs

(三)deployment 部署mysql:5.7.39

apiVersion: apps/v1
kind: Deployment
metadata:
name: mysql
labels:
app: mysql
spec:
selector:
matchLabels:
app: mysql
template:
metadata:
labels:
app: mysql
spec:
containers:
- name: mysql
image: mysql:5.7.39
env:
- name: MYSQL_ROOT_PASSWORD
value: 123456
ports:
- containerPort: 3306
name: mysql
volumeMounts: # 挂载Pod上的卷到容器
- name: mysql-persistent-storage # Pod上卷的名字,与“volumes”名字匹配
mountPath: /var/lib/mysql # 挂载的Pod的目录
volumes: # 挂载持久卷到Pod
- name: mysql-persistent-storage # 持久卷名字, 与“volumMounts”名字匹配
persistentVolumeClaim:
claimName: mysql-pvc # 持久卷申请名字

(四)service的部署

apiVersion: v1
kind: Service
metadata:
name: mysql
spec:
type: NodePort
ports:
- protocol: TCP
nodePort: 30306
port: 3306
targetPort: 3306
selector:
app: mysql

二、配置文件的同步问题

(一)configmap的定义

apiVersion: v1
kind: ConfigMap
metadata:
name: mysql-configmap
data:
# 类文件键
my.cnf: |
[mysqld]
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
skip-host-cache
skip-name-resolve
datadir=/var/lib/mysql
socket=/var/run/mysqld/mysqld.sock
secure-file-priv=/var/lib/mysql-files
user=mysql

lower_case_table_names=1
event_scheduler=ON
max_connections=2000
wait_timeout=1800
max_user_connections=800
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

#log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

[client]
socket=/var/run/mysqld/mysqld.sock

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

(二)重新进行挂载configmap

apiVersion: apps/v1
kind: Deployment
metadata:
name: mysql
labels:
app: mysql
spec:
selector:
matchLabels:
app: mysql
template:
metadata:
labels:
app: mysql
spec:
containers:
- name: mysql
image: mysql:5.7.39
env:
- name: MYSQL_ROOT_PASSWORD
value: 123456
ports:
- containerPort: 3306
name: mysql
volumeMounts: # 挂载Pod上的卷到容器
- name: mysql-persistent-storage # Pod上卷的名字,与“volumes”名字匹配
mountPath: /var/lib/mysql # 挂载的Pod的目录
- name: configmap
mountPath: /etc/my.cnf
subPath: my.cnf
readOnly: true
volumes: # 挂载持久卷到Pod
- name: mysql-persistent-storage # 持久卷名字, 与“volumMounts”名字匹配
persistentVolumeClaim:
claimName: mysql-pvc # 持久卷申请名字
- name: configmap
configMap:
name: mysql-configmap


举报

相关推荐

k8s部署mysql

K8s部署单机mysql

k8s实践

K8S部署

K8s部署

k8s实践总结

kudeadm 部署 k8s

K8S集群部署

0 条评论