Kubernetes:使用从文件系统 volumeMode PVC

问题描述

我正在探索 voluemsnapshots 并使用快照作为源创建 PVC。 我观察到一件事,我有一个卷模式设置为文件系统的 PVC。我尝试创建该 PVC 的卷快照,结果很好。 之后,使用该volumenapshot,我尝试创建一个将volumeMode 设置为Block 的PVC。它被创建,我可以附加到 pod A。在 pod A 中,我尝试将设备安装在某个目录上,我可以看到文件系统 PVC 中的所有数据。

这听起来对吗?

如果我们尝试将 Filesystem volumeMode PV 与 Block volumeMode PVC 一起使用,那么这是不允许的(因为在绑定操作中不会发生)。但是使用volumesnapshot可以实现相同的效果,对吗?

这是我的文件系统 volumemode PVC(模式未设置但认为文件系统)(使用 ext4/xfs 文件系统)

piVersion: v1
kind: PersistentVolumeClaim
Metadata:
  name: fs-pvc
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: csi-gce-pd
  resources:
    requests:
      storage: 2Gi

这是我的卷快照 yaml

apiVersion: snapshot.storage.k8s.io/v1beta1
kind: VolumeSnapshot
Metadata:
  name: fs-snapshot
spec:
  source:
    persistentVolumeClaimName: fs-pvc

这是我使用 volumenapshot fs-snapshot

创建的 PVC
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 驱动程序。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)