网络存储卷支持多种存储系统,每种存储系统的配置有各不相同,为了屏蔽底层存储实现的细节,让用户方便使用及管理员方便管理,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