前面介绍了PV的基本概念,在介绍中我们知道PV可以用很多共享存储做底层存储设备,这里用NFS作为存储设备做测试。(首先安装好NFS,具体的安装方法见4.4 存储设备安装)
PV作为存储设备,主要包括存储能力,访问模式,存储类型,回收信息等关键信息。
下面我们定义一个PV的YAML文件:
apiVersion: v1
kind: PersistentVolume
metadata:
name: my-pv01
labels:
storage: pv
spec:
accessModes:
- ReadWriteOnce
capacity:
storage: 1Gi
persistentVolumeReclaimPolicy: Recycle
nfs:
path: /data/k8s
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:
# kubectl create -f pv01-daemo.yaml
然后观察其PV:
[root@master volume]# kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
my-pv01 1Gi RWO Recycle Available 3s
PV的状态说明:
- Available(可用):表示可用状态,还未被任何 PVC 绑定
- Bound(已绑定):表示 PVC 已经被 PVC 绑定
- Released(已释放):PVC 被删除,但是资源还未被集群重新声明
- Failed(失败): 表示该 PV 的自动回收失败