一、创建tomcat+mysql集群
详细过程参考博文:https://www.cnblogs.com/luoahong/p/12917822.html
未添加数据截图如下

二、数据库未持久化数据库重启数据丢失
1、添加数据

2、删除数据库容器
[root@master tomcat_demo]# kubectl get pods NAME READY STATUS RESTARTS AGE po/mysql-3qkf1 1/1 Running 0 2d po/myweb-d338g 1/1 Running 0 1m po/myweb1-xxxqs 1/1 Running 0 1d [root@master tomcat_demo]# kubectl delete pod mysql-3qkf1 pod "mysql-3qkf1" deleted [root@master tomcat_demo]# kubectl get pods NAME READY STATUS RESTARTS AGE mysql-8tmlv 1/1 Running 0 8s myweb-s7gm5 1/1 Running 0 8m myweb1-xxxqs 1/1 Running 0 1d
3、再次访问数据丢失啦

三、创建pv和pvc
1、创建运行PV
[root@master tomcat_demo]# cp ../volume/test-pv* .
[root@master tomcat_demo]# ls
mysql-rc.yml mysql-svc.yml test-pvc.yaml test-pv.yaml tomcat-rc.yml tomcat-svc.yml
[root@master tomcat_demo]# mv test-pv.yaml mysql-pv.yaml
[root@master tomcat_demo]# vim mysql-pv.yaml
[root@master tomcat_demo]# cat mysql-pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: mysql
labels:
type: mysql
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Recycle
nfs:
path: "/data/mysql"
server: 192.168.118.18
readOnly: false
[root@master tomcat_demo]# mkdir /data/mysql
[root@master tomcat_demo]# kubectl create -f mysql-pv.yaml
persistentvolume "mysql" created
2、创建运行PVC
[root@master tomcat_demo]# mv test-pvc.yaml mysql-pvc.yaml
[root@master tomcat_demo]# vim mysql-pvc.yaml
[root@master tomcat_demo]# cat mysql-pvc.yaml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: mysql
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 10Gi
[root@master tomcat_demo]# kubectl create -f mysql-pvc.yaml
persistentvolumeclaim "mysql" created
[root@master tomcat_demo]#
[root@master tomcat_demo]# kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESSMODES AGE
mysql Bound mysql 10Gi RWX 1m
nfs Bound test2 5Gi RWX 43m
nfs2 Bound test 10Gi RWX 39m
四、pod使用pvc
创建mysql-rc-pvc.yaml
[root@master tomcat_demo]# vim mysql-rc-pvc.yaml
[root@master tomcat_demo]# cat mysql-rc-pvc.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: mysql
spec:
replicas: 1
selector:
app: mysql
template:
metadata:
labels:
app: mysql
spec:
containers:
- name: mysql
image: 192.168.118.18:5000/mysql:5.7
ports:
- containerPort: 3306
env:
- name: MYSQL_ROOT_PASSWORD
value: '123456'
volumeMounts:
- name: data
mountPath: /var/lib/mysql
volumes:
- name: data
persistentVolumeClaim:
claimName: mysql
运行检查
[root@master tomcat_demo]# kubectl apply -f mysql-rc-pvc.yaml replicationcontroller "mysql" configured [root@master tomcat_demo]# kubectl get pods NAME READY STATUS RESTARTS AGE mysql-8stxt 1/1 Running 0 7s myweb-s7gm5 1/1 Running 0 29m myweb1-xxxqs 1/1 Running 0 1d
四、测试持久化
1、web页面添加数据

2、查看共享目录
[root@master tomcat_demo]# ls /data/mysql/ auto.cnf HPE_APP ib_buffer_pool ibdata1 ib_logfile0 ib_logfile1 ibtmp1 mysql performance_schema sys [root@master tomcat_demo]# ls /data/mysql/ auto.cnf HPE_APP ib_buffer_pool ibdata1 ib_logfile0 ib_logfile1 ibtmp1 mysql performance_schema sys
3、删除数据库容器
[root@master tomcat_demo]# kubectl delete pod mysql-8stxt pod "mysql-8stxt" deleted [root@master tomcat_demo]# kubectl get all -o wide NAME READY STATUS RESTARTS AGE IP NODE po/mysql-lfp5h 1/1 Running 1 4s 172.16.60.3 192.168.118.19 po/myweb-s7gm5 1/1 Running 0 37m 172.16.56.6 192.168.118.18 po/myweb1-xxxqs 1/1 Running 0 1d 172.16.60.2 192.168.118.19
4、查看web界面数据依然存在
