1、搭建nfs实现mysql数据持久化
1 在master执行 2 yum -y install nfs-utils rpcbind 3 mkdir /nfsdata/mysql -p 4 echo /nfsdata *(rw,no_root_squash,sync) > /etc/exports 5 systemctl restart nfs-server rpcbind 6 systemctl enable rpcbind && systemctl enable nfs-server 7 showmount -e 8 Export list for master: 9 /nfsdata * 10 在node节点执行 11 yum -y install nfs-utils rpcbind 12 systemctl restart nfs-server rpcbind
2、创建pv
server: IP为master的Ip
vim mysql-pv-yaml
1 apiVersion: v1 2 kind: PersistentVolume 3 metadata: 4 name: mypv1 5 spec: 6 capacity: 7 storage: 5Gi 8 accessModes: 9 - ReadWriteMany 10 persistentVolumeReclaimPolicy: Recycle #Retain 手动删除 11 storageClassName: nfs 12 nfs: 13 path: /nfsdata/mysql 14 server: 192.168.3.36
#kubectl apply -f mysql-pv-yaml
3、创建pvc
vim mysql-pvc-yaml
1 apiVersion: v1 2 kind: PersistentVolumeClaim 3 metadata: 4 name: mypvc1 5 spec: 6 accessModes: 7 - ReadWriteMany 8 resources: 9 requests: 10 storage: 4Gi 11 storageClassName: nfs
#kubectl apply -f mysql-pv-yaml
查看pv、pvc的状态。
4、创建mysql-pod+svc
vim mysql-deploy.yaml
apiVersion: apps/v1 kind: Deployment metadata: name: mysql spec: selector: matchLabels: app: mysql template: metadata: labels: app: mysql spec: containers: - name: mysql image: mysql:5.7 env: #配置变量,设置mysql的密码 - name: MYSQL_ROOT_PASSWORD value: 123.com ports: - containerPort: 3306 volumeMounts: - name: mysql-persistent-storage mountPath: /var/lib/mysql #MySQL容器的数据都是存在这个目录的,要对这个目录做数据持久化 volumes: - name: mysql-persistent-storage persistentVolumeClaim: claimName: mypvc1 #指定pvc名称 --- apiVersion: v1 kind: Service metadata: name: mysql spec: selector: app: mysql type: NodePort ports: - port: 3306 targetPort: 33333
#kubectl apply -f mysql-deploy.yaml
查看pod状态
kubectl get pod -o wide -w
5、进入数据库,添加数据
kubectl exec -it mysql-74b7b6d8cc-r5kq5 -- /bin/bash
6、手动删除节点,验证容器中的数据是否存在。
在node1上的删除容器,由于deployment保证副本数量。所以会重新调度到node2上。
可以看到数据存在