前面介绍了PV的基本概念,在介绍中我们知道PV可以用很多共享存储做底层存储设备,这里用NFS作为存储设备做测试。(首先安装好NFS,具体的安装方法见4.4 存储设备安装)

    PV作为存储设备,主要包括存储能力,访问模式,存储类型,回收信息等关键信息。

    下面我们定义一个PV的YAML文件:

    1. apiVersion: v1
    2. kind: PersistentVolume
    3. metadata:
    4. name: my-pv01
    5. labels:
    6. storage: pv
    7. spec:
    8. accessModes:
    9. - ReadWriteOnce
    10. capacity:
    11. storage: 1Gi
    12. persistentVolumeReclaimPolicy: Recycle
    13. nfs:
    14. path: /data/k8s
    15. server: 172.16.1.128

    参数说明:
    (1)、accessMode:访问模式,有ReadWriteOnce,ReadOnlyMany,ReadWriteMany。其中:

    • ReadWriteOnce:表示具有读写权限,但是只能被一个node挂载一次
    • ReadOnlyMany:表示具有只读权限,可以被多个node多次挂载
    • ReadWriteMany:表示具有读写权限,可以被多个node多次挂载

    (2)、capacity:持久卷资源和容量的描述,存储大小是唯一可设置或请求的资源。
    (3)、persistentVolumeReclaimPolicy: 回收策略,也就是释放持久化卷时的策略,其有以下几种:

    • Retain:保留数据,如果要清理需要手动清理数据,默认的策略;
    • Delete:删除,将从Kubernetes中删除PV对象,以及外部基础设施中相关的存储资产,比如AWS EBS, GCE PD, Azure Disk, 或Cinder volume;
    • Recycle:回收,清楚PV中的所有数据,相当于执行rm -rf /pv-volume/*;

    然后我们创建PV:

    1. # kubectl create -f pv01-daemo.yaml

    然后观察其PV:

    1. [root@master volume]# kubectl get pv
    2. NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
    3. my-pv01 1Gi RWO Recycle Available 3s

    PV的状态说明:

    • Available(可用):表示可用状态,还未被任何 PVC 绑定
    • Bound(已绑定):表示 PVC 已经被 PVC 绑定
    • Released(已释放):PVC 被删除,但是资源还未被集群重新声明
    • Failed(失败): 表示该 PV 的自动回收失败