参考链接:https://blog.csdn.net/qq_35349114/article/details/116303906
1、PVC
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mysql-pvc
namespace: default
annotations:
volume.beta.kubernetes.io/storage-class: "managed-nfs-storage"
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
2、configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: mysql-config
data:
my.cnf: |
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
skip-character-set-client-handshake = true
# 打开binlog日志
log-bin=bin-log
max_connections=5000
# 在容器里面需要设置下时区
default-time-zone='+8:00'
---
apiVersion: v1
kind: ConfigMap
metadata:
name: go-db-config
data:
config.toml: |
mysql-addr='root:123456@tcp(192.168.6.20:31306)/test'
3、MySQL
apiVersion: apps/v1
kind: Deployment
metadata:
name: mysql-fox-deployment
spec:
selector:
matchLabels:
app: mysql-fox
replicas: 1
template:
metadata:
labels:
app: mysql-fox
spec:
containers:
- name: mysql-fox
image: mysql
imagePullPolicy: Always
env: #以下是设置MySQL数据库的密码
- name: MYSQL_ROOT_PASSWORD
value: "123456"
ports:
- containerPort: 3306
protocol: TCP
volumeMounts:
- name: mysql-persistent-storage
mountPath: /var/lib/mysql #MySQL容器的数据都是存在这个目录的,要对这个目录做数据持久化
- name: config-volume
mountPath: /etc/mysql/conf.d #mysql 配置
volumes:
- name: mysql-persistent-storage
persistentVolumeClaim:
claimName: mysql-pvc #指定pvc的名称
- name: config-volume
configMap:
name: mysql-config
---
apiVersion: v1
kind: Service
metadata:
name: mysql-fox
spec:
ports:
- name: mysql-fox-port
protocol: TCP
port: 3306
targetPort: 3306
nodePort: 31306
type: NodePort
selector:
app: mysql-fox