2

我已经让本地持久卷工作,使用本地目录作为挂载点、存储类、PVC 等,所有这些都使用标准文档。

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

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

4

3 回答 3

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
于 2019-09-18T07:20:52.533 回答
2

您可以简单地更改挂载路径并将每个应用程序的挂载路径分开,以便 POD 的文件进入单独的目录。

于 2019-09-18T06:21:48.520 回答
2

另一种方法是使用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

如此处所述。

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

于 2019-09-18T11:05:19.913 回答