|NO.Z.00192|——————————|CloudNative|——|KuberNetes&持久存储.V05|——|PV&PVC.v01|概述|
一、PV&PVC概述
### --- PV&PVC概述
~~~ Volume:NFS、CEPH、GFS :Volume可以直接连的一些存储集群类型
~~~ PV:PersistentVolume:NFS、CEPG/GFS:也可以连接这些存储集群类型
### --- 引入PV的必然性
~~~ K8s:Volume——>CEPH :k8s肯定知道cepe是怎么配置的,或者一些存储设备怎么配置的。
~~~ K8s:不只是管理员在使用。开发人员volume;就会导致无法操作的过程
~~~ 所以k8s引入了:PV、PVC:用来管理k8s中的存储的
~~~ PV:由k8s配置的存储,PV同样是集群的一类资源,yaml。
~~~ PVC:PersistentVolumeClaim:对PV的申请,
二、PV&PVC架构图

### --- 存储集群:
~~~ # 传统连接配置:
~~~ k8s集群中的Pod有些数据需要存储的话;就可以使用volumes直接连它来存储。
~~~ # PV:
~~~ 使用PV去连接它存储集群中的存储。一套集群中PV可能会有很多个,后面连接着不同类型的存储集群。
~~~ # PVC:
~~~ 对PV的申请;我这个容器需要申请存储空间挂载到该容器上。
~~~ PVC会告诉PV它需要哪一类的存储集群,然后挂载给Pod去使用;PVC是向PV申请的。
~~~ PV是没有namespace隔离的,就是创建一个PV,所有namespace下的Pod都是可以去使用的
~~~ PVC是有namespace隔离的,这个namespace某一个文件创建了PVC,
~~~ 就会自动匹配到这几个存储集群中根据条件匹配到PV,然后建立链接。
~~~ 这样就不需要关系后端的存储是什么,只需要关系申请的存储类型是什么;
~~~ 极大的减少了yaml的复杂程度和可用性。
~~~ PVC是在pod里面,Pod里面写的这个volumes,volumes里面才是PVC。
~~~ 创建了一块PV之后,需要创建一块PVC,
~~~ 根据storageclassname连接到某个类型的PV里面,然后PVC和某个存储类型的PV绑定到一块,
~~~ 这个Pod里面的PVC写了一个名称,若是这个PVC的名称和外部的PVC的名称是对应的,它就会建立连接,
~~~ 这个PVC是基于namespace隔离的,PV不是基于namespace隔离的。
三、PV有两种形式
### --- PV有两种形式
~~~ NFS:是作为静态的存储,自己手动创建这个PV,在创建PVC,然后进行绑定。
~~~ GFS和CEPE:是作为动态的存储,就不需要再创建这个PV,它会自动去创建这个PV
四、PV官网文档地址:https://kubernetes.io/docs/concepts/storage/persistent-volumes/

Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
——W.S.Landor
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了