一、创建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