本地永久卷在其自己的目录中

时间:2019-09-18 06:18:38

标签: kubernetes persistent-volume-claims

我已经使用本地目录作为安装点,存储类,PVC等来使用本地永久卷,并且全部使用标准文档。

但是,当我在Pod中使用此PVC时,所有文件都是在挂载点的基础上创建的,即,如果/data是我的挂载点,我的所有应用程序文件都存储在{{ 1}}文件夹。我看到,将来会有更多的应用程序写入同一文件夹,这会造成冲突。

正在寻找任何建议或建议,以将Pod的每个PVC甚至应用程序文件放入PV中的单独目录中。

3 个答案:

答案 0 :(得分:3)

如果将数据存储在卷上的其他目录中,则可以使用subPath使用多个安装点将数据分为不同的目录。

例如

apiVersion: v1
kind: Pod
metadata:
  name: podname
spec:
    containers:
    - name: containername
      image: imagename
      volumeMounts:
      - mountPath: /path/to/mount/point
        name: volumename
        subPath: volume_subpath
      - mountPath: /path/to/mount/point2
        name: volumename
        subPath: volume_subpath2
    volumes:
    - name: volumename
      persistentVolumeClaim:
        claimName: pvcname

答案 1 :(得分:2)

您可以简单地更改装入路径并分隔每个应用程序的装入路径,以便将POD文件放入单独的目录中。

答案 2 :(得分:1)

另一种方法是使用subPathExpr。 注意:

  

subPath和subPathExpr属性是互斥的

apiVersion: v1
kind: Pod
metadata:
  name: pod3
spec:
  containers:
  - name: pod3
    env:
    - name: POD_NAME
      valueFrom:
        fieldRef:
          apiVersion: v1
          fieldPath: metadata.name
    image: busybox
    command: [ "sh", "-c", "while [ true ]; do echo 'Hello'; sleep 10; done | tee -a /logs/hello.txt" ]
    volumeMounts:
    - name: workdir1
      mountPath: /logs
      subPathExpr: $(POD_NAME)
  restartPolicy: Never
  volumes:
  - name: workdir1
    persistentVolumeClaim:
      claimName: pvc1

here所述。

此外,请遵循修复Kubernetes中的子路径卷漏洞 herehere