网络存储卷支持多种存储系统,每种存储系统的配置有各不相同,为了屏蔽底层存储实现的细节,让用户方便使用及管理员方便管理,Kubernetes提引入了PersistentVolume(PV)、PersistentVolumeClaim和StorageClass(PVC)3种资源对象。

PersistentVolume(PV)(持久卷):对存储资源的抽象,将存储定义为一种容器应用可以使用的资源,

包含存储资源实现的细节例如nfs、GlusterFS、RBD、iSCSI等。

PersistentVolumeClaim(PVC):是由用户发起的对存储资源的请求。PVC消耗PV资源,不用关注pv资源的实现细节,Kubernetes会自动为其绑定符合条件的PV。

StorageClass:不需要提前创建PV,通过设置StorageClass对后端存储资源进行描述,标记存储的类型和特性。使用时用户创建PVC申请某种存储类型,kubenetes会自动完成PV的创建及与PVC的绑定。

1.PV

1.1创建PV

1.1.1创建模板

vi nfspv.yml

内容如下

说明:

kind:资源对象类型,当前创建PersistentVolume类型资源

spec:资源对象的设置参数

capacity:pv容量

accessModes:PV 对存储资源访问模式,包含ReadOnlyMany(多个节点以只读模式)、ReadWriteMany(多个节点以读写模式)和ReadWriteOnce(单个节点读写模式)

storageClassName:PV资源的分类名称,创建PVC时可以通过这个名称来绑定PV

persistentVolumeReclaimPolicy:删除PVC时,PV资源的回收策略,包含Recycle(自动回收)、Delete(自动删除)、Retain(保留)三种

nfs:底层存储资源为nfs

server:nfs服务端ip

path:nfs共享目录

1.1.2使用模板创建pv

kubectl apply -f nfspv.yml

1.1.3查看pv

kubectl get pv

2.PVC

2.1创建PVC

2.1.1创建模板

vi  nfspvc.yml

内容如下:

说明:

kind:资源对象,创建pvc使用资源对象类型为PersistentVolumeClaim

spec:资源对象设置

accessModes:对PV的访问模式

storageClassName:引用的PV资源描述性分类名称

resources:PVC的资源参数

requests:资源需求

2.1.2使用模板创建pvc

kubectl apply -f nfspvc.yml

 

2.1.3查看

kubectl get pvc