- PV:PV描述的是持久化存储卷,主要定义的是一个持久化存储在宿主机上的目录,比如一个NFS的挂载目录
- PVC:PVC描述的是Pod所希望使用的持久化存储的属性,比如,Volume存储的大小、可读写权限等等
**<font style="color:rgb(1, 1, 1);">ReadWriteOnce</font>**
(RWO):是最基本的方式,可读可写,但只支持被单个节点挂载。**<font style="color:rgb(1, 1, 1);">ReadOnlyMany</font>**
(ROX):可以以只读的方式被多个节点挂载。**<font style="color:rgb(1, 1, 1);">ReadWriteMany</font>**
(RWX):这种存储可以以读写的方式被多个节点共享。
<font style="color:rgb(0, 0, 0);">StorageClass</font>
提前已经装好了,通过创建pv、pvc,使用不同的accessmodes和volumeMode实验
<font style="color:rgb(0, 0, 0);">PersistentVolumeClaim</font>
,它利用上面创建的基于ceph-csi的<font style="color:rgb(0, 0, 0);">StorageClass</font>
,可以使用以下 YAML 从csi-rbd-sc StorageClass请求原始块存储
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: raw-block-pvc
spec:
accessModes:
- ReadWriteOnce
volumeMode: Block
resources:
requests:
storage: 1Gi
storageClassName: csi-rbd-sc
<font style="color:rgb(0, 0, 0);">accessModes</font>
是RWO,<font style="color:rgb(0, 0, 0);">volumeMode</font>
是block,看一下是否能成功创建
<font style="color:rgb(0, 0, 0);">StorageClass</font>
创建基于文件系统的<font style="color:rgb(0, 0, 0);">PersistentVolumeClaim</font>
yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: rbd-pvc
spec:
accessModes:
- ReadWriteOnce
volumeMode: Filesystem
resources:
requests:
storage: 1Gi
storageClassName: csi-rbd-sc
<font style="color:rgb(0, 0, 0);">accessMode</font>
还是RWO,<font style="color:rgb(0, 0, 0);">volumeMode</font>
是filesystem,看是否创建成功
<font style="color:rgb(0, 0, 0);">volumeMode</font>
yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: raw-block-pvc-rwx
spec:
accessModes:
- ReadWriteMany
volumeMode: Block
resources:
requests:
storage: 1Gi
storageClassName: csi-rbd-sc
看下是否能正常bound
<font style="color:rgb(0, 0, 0);">volumeMode</font>
yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: rbd-pvc-rwx
spec:
accessModes:
- ReadWriteMany
volumeMode: Filesystem
resources:
requests:
storage: 1Gi
storageClassName: csi-rbd-sc
apply看下是否正常bound
<font style="color:rgb(0, 0, 0);">accessModes</font>
是RWX的情况下,<font style="color:rgb(0, 0, 0);">volumeMode</font>
为filesystem是不支持的,无法创建成功,而如果ceph是文件存储的类型时,<font style="color:rgb(0, 0, 0);">accessModes</font>
是RWX,<font style="color:rgb(0, 0, 0);">volumeMode</font>
是filesystems才可以创建成功。
总结:块存储或文件存储是否支持RWX或RWO,不单取决于它是块还是文件,还取决于上层pvc的<font style="color:rgb(0, 0, 0);">accessModes</font>
,以及<font style="color:rgb(0, 0, 0);">volumeMode</font>
。