1、搭建互联互通的文件存储服务器集合。比如基于NFS的共享访问。
2、创建PV对象:网络存储卷。 kind: PersistentVolume name: lbh-pv storageClassName: nfs #定义存储类的名字
3、创建PVC对象, kind: PersistentVolumeClaim name: lbh-pvc storageClassName: nfs #存储类的名字,必须与PV资源一致(PV和PVC挂钩)
4、创建mysq deployment应用,设置镜像版本、端口、挂载目录、用户、密码以及PVC名称。
persistentVolumeClaim:
28. claimName: lbh-pvc #指定PVC资源。(存储服务和PVC挂钩)
通过PVC将PV里面的存储目录挂载到mysql-server里
验证数据一致性:
kill掉这个node上的mysql-pod,重新将mysql-pod拉起在另外一个node上,进入该pod进行select,查看数据一致性。
也就是说不通node上的mysql-pod进行插入和修改删除后数据一致性。(持久化存储)
PV信息:目录、ip、存储类型名 /nfsdata/mysql-data ip 192.168.56.105 storageClassName: nfs
PVC信息:空间、存储类型名 1GB storageClassName: nfs (此项目和PV建联)
mysql信息:kind:service name:mysql port:3306 app:mysql, deployment volumMoundt name:mysql-presistent-storage mountPath:/var/lib/mysql
volumes name:mysql-presistent-storage, persistentVolumeClaim: claimName:mysql-pvc(关联PVC)
也就是说/var/lib/mysql通过PVC,可以在PV里面的path/nfsdata/mysql-data 存储1个GB的数据。
启动lbh-mysql后进行创建表插入查询等操作,最终在PV的目录里找到数据库文件是否有刚才的操作。这样一个完整的基于NFS的mysql持久化存储就部署完成了。
数据流:后台业务服务------------redis服务--------------mysql服务------------PVC--------------PV--------------磁盘存储
基础概念:
PV:网络存储卷,存储资源声明,PV里面存储目录数据一致存在/持久化。
PVC:由存储服务调用的网络存储的请求,PVC消耗的是PV资源。
--------抛个问题PVC既然能设置大小,那么但凡调用该PVC的存储服务pod最多可以存储1GB大小数据,如果满了会怎么样?
参考:https://blog.51cto.com/u_13911055/2471239
https://steemit.com/kubernetes/@cloudman6/mysql-pv-pvc-kubernetes-41