PV介绍
PV是对底层网络共享存储的一个抽象,PV由管理员创建和配置。PV是抽象出来的存储资源,包括存储能力、存储类型、访问模式、回收策略、后端存储类型等设置。
PV的参数详解
PV的yaml模板
apiVersion: v1
kind: PersistentVolume
metadata:
name: test-pv1
spec:
capacity:
storage: 1Mi
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Recycle
storageClassName: nfs-stoarge
nfs:
path: /date-nfs/k8s
server: 127.0.0.1
spec.capacity.storage
:存储大小;spec.accessModes
:访问模式;
- RWO:ReadWriteOnce,仅允许单个节点挂载进行读写;
- ROX:ReadOnlyMany,允许多个节点挂载且只读;
- RWX:ReadWriteMany,允许多个节点挂载进行读写;
spec.persistentVolumeReclaimPolicy
:回收策略,有三种Retain/Recycle/Delete
- Retain:保留,删除PVC后,PV保留数据;
- Recycle:回收空间,删除PVC后,简单的清除文件;(NFS和HostPath存储支持)
- Delete:删除,删除PVC后,与PV相连接的后端存储会删除数据;(AWS EBS、Azure Disk、Cinder volumes、GCE PD支持)
spec.storageClassName
:存储类别,指定一个StorageClass资源对象的名称,具有特定类别的PV只能与请求了该类别的PVC进行绑定;未设置特定类型的PV只能与不请求任何类型的PVC进行绑定。spec.mountOptions
: 挂载参数,当PV挂载到一个节点时,可能需要设置额外的挂载参数,就是通过mountOptions字段设置。spec.nodeAffinity
:节点亲和性,PV可以设置节点亲和性限制只能通过某些节点访问卷,使用这些卷的Pod将被调度到满足条件的节点上。spec.volumeMode
:存储卷模式,k8s v1.13版本引入存储卷模式Volume Mode,值有Filesystem(文件系统,默认值),Block(块设备)。
PV的生命周期
$ kubectl get pv
PV一共有4个生命周期阶段:Available/Bound/Released/Failed
- Available: 可用状态,无PVC绑定;
- Bound:绑定状态,已经和某个PVC绑定;
- Released:释放状态,绑定的PVC已删除,资源释放,但没有被集群回收;
- Failed:失败状态,自动资源回收失败;
PV的常用命令
- 创建(yaml的方式)
$ kubectl create -f pv.yaml
- 删除
$ kubectl delete pv pv_name
- 查看所有PV
$ kubectl get pv
- 查看某个PV
$ kubectl get pv pv_name
- 查看详情
$ kubectl describe pv pv_name
注意: 若在某个命名空间下,以上命令可以加上-n ns_name