我正在探索 voluemsnapshots 并使用快照作为源创建 PVC。我观察到一件事,我有一个将 volumeMode 设置为 Filesystem 的 PVC。我尝试创建该 PVC 的卷快照,结果很好。之后,使用该volumesnapshot,我尝试创建一个volumeMode 设置为Block 的PVC。它已创建,我可以附加到 pod A。在 pod A 中,我尝试将设备安装在某个目录上,我可以看到文件系统 PVC 中的所有数据。
这听起来对吗?
如果我们尝试将 Filesystem volumeMode PV 与 Block volumeMode PVC 一起使用,那么这是不允许的(因为在 bind op 中不会发生)。但是使用volumesnapshot可以实现同样的效果,对吗?
这是我的文件系统卷模式 PVC(模式未设置,但默认为文件系统)(使用 ext4/xfs 文件系统)
piVersion: v1
kind: PersistentVolumeClaim
metadata:
name: fs-pvc
spec:
accessModes:
- ReadWriteOnce
storageClassName: csi-gce-pd
resources:
requests:
storage: 2Gi
这是我的volumesnapshot yaml
apiVersion: snapshot.storage.k8s.io/v1beta1
kind: VolumeSnapshot
metadata:
name: fs-snapshot
spec:
source:
persistentVolumeClaimName: fs-pvc
这是我使用volumesnapshot创建的PVCfs-snapshot
piVersion: v1
kind: PersistentVolumeClaim
metadata:
name: block-pvc
spec:
dataSource:
name: fs-snapshot
kind: VolumeSnapshot
apiGroup: snapshot.storage.k8s.io
volumeMode: Block
storageClassName: csi-gce-pd
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 2Gi
如果我尝试将其与以下 pod 一起使用,
apiVersion: v1
kind: Pod
metadata:
name: simple
spec:
volumes:
- name: vol
persistentVolumeClaim:
claimName: block-pvc
containers:
- command:
- /bin/sh
- -c
- sleep 36000000
image: ubuntu
imagePullPolicy: IfNotPresent
name: ubuntu
volumeDevices:
- devicePath: /dev/any
name: vol
securityContext:
privileged: true
现在,在 pod 中,如果我这样做了,mount /dev/any /tmp
那么我可以看到fs-pvc
(文件系统模式 PVC)中存在的所有数据,并且该设备/dev/any
与fs-pvc
. 在我的情况下,它是 ext4。
这是错误的还是受支持的事情?如果它受支持,那么它可以特定于 CSI 实现吗?我正在使用 GCE PD csi 驱动程序。