Skip to content

k8s动态 nfs

一、pv、pvc、storageClass介绍

  • PersistentVolume(PV)是集群中已由管理员配置的一段网络存储。集群中的资源就像一个节点是一个集群资源。PVv是诸如卷之类的卷插件,但是具有独立于使用PV的任何单个pod的生命周期。
  • PersistentVolumeClaim(PvC)是用户存储的请求。Pvc的使用逻辑:在pod中定义一个存储卷(该存储卷类型为FvC),定义的时候直接指定大小,pvc必须与对应的pv建立关系,pvc会根据定义去pv申请,而pv是由存储空间创建出来的。pv和pvc是kubernetes抽象出来的一种存储资源。
  • storageclass是一个存储类,通过创建storageclass可以动态生成一个存储卷供k8s用户使用

二、nfs介绍

Kubernetes使用NFS共享存储有两种方式:

  • 手动方式静态创建所需要的PV和PVC;
  • 通过创建PVC动态地创建对应PV,无需手动创建PV。

动态创建PV,是指在现有PV不满足PVC的请求时,可以使用存储分类(StorageClass),描述具体过程为:PV先创建分类,PVC请求已创建的某个类(StorageClass)的资源,这样就达到动态配置的效果。即通过一个叫 Storage Class的对象由存储系统根据PVC的要求自动创建。其中动态方式是通过StorageClass来完成的,这是一种新的存储供应方式。动态卷供给能力让管理员不必进行预先创建存储卷,而是随用户需求进行创建。

StorageClass除了由存储系统动态创建,节省了管理员的时间,还有一个好处是可以封装不同类型的存储供PVC选用,在StorageClass出现以前,PVC绑定一个PV只能根据两个条件,一个是存储的大小,另一个是访问模式。在StorageClass出现后,等于增加了一个绑定维度。

三、PV的提供方式

3.1 静态pv

静态–>直接固定存储空间: 集群管理员创建一些 PV。它们携带可供集群用户使用的真实存储的详细信息。它们存在于Kubernetes API中,可用于消费。

下面的pvc、pv和nfs都是手动进行绑定

image-20220619115136843

3.2 动态pv

NFS对外提供的共享目录为V1-V5,k8s管理员会使用 NFS 存储卷的方式创建PV,需要指定存储大小和读写的模式,比如PV1 创建1个G,PV2创建2个G,PV3 创建三个G的空间。这时候创建个Pod,会通过PVC的方式去申请PV资源,比如我这个Pod要2个G的资源,就会去根据读写模式、大小 去匹配 具有相同存储大小和读写的模式的PV,最终创建资源

动态nfs创建pv、pvc