0

我正在探索 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/anyfs-pvc. 在我的情况下,它是 ext4。

这是错误的还是受支持的事情?如果它受支持,那么它可以特定于 CSI 实现吗?我正在使用 GCE PD csi 驱动程序。

4

0 回答 0