【问题标题】:Kubernetes PVC volume mountKubernetes PVC 卷挂载
【发布时间】:2019-10-09 16:32:26
【问题描述】:

我正在 k8s 上运行应用程序。

我的 docker 文件是这样的:

FROM python:3.5 AS python-build
ADD . /test
WORKDIR /test

在测试目录中,我正在这个测试文件夹中处理我的所有文件。

当我进入 pod 并检查文件结构时,就像/var /usr /test /bin

所以我想在 pvc 中添加整个文件夹测试

在测试文件结构中类似于/app /data /history

那么我可以使用 mountpath 保存添加文件夹附加到 pvc 吗?

是否可以有两个挂载路径但一个 pvc ?

【问题讨论】:

    标签: docker kubernetes


    【解决方案1】:

    据我了解,您希望将您的测试目录作为挂载路径包含在您的 PVC 中。要回答这个问题,是的,您可以通过在主机路径而不是挂载路径中提供它来做到这一点。如文档中所述:-

    hostPath 卷将文件或目录从主机节点的文件系统挂载到您的 Pod 中。这不是大多数 Pod 需要的东西,但它为某些应用程序提供了一个强大的逃生舱。

    并且挂载路径是 -

    在 pod 中应该安装卷的位置。

    所以,如果您想从您的主机系统安装 \test 文件夹,您需要在 pv 中提供它,如下所示

    kind: PersistentVolume
    apiVersion: v1
    metadata:
      name: task-pv-volume
      labels:
        type: local
    spec:
      storageClassName: manual
      capacity:
        storage: 10Gi
      accessModes:
        - ReadWriteOnce
      hostPath:
        path: "/test"
    

    您可以使用此 PV 通过 pvc 声明一个卷,并使用 mountPath 将该卷挂载到您的 pod 中。

    要回答您的第二个问题,是的,您可以为单个 PVC 设置多个安装路径。一个有效的例子是:-

        "containers": [
        {
            ...,
            "volumeMounts": [
             {
                 "mountPath": "/mnt/1",
                 "name": "v1",
                 "subPath": "data/1"
             },
             {
                 "mountPath": "/mnt/2",
                 "name": "v1",
                 "subPath": "data/2"
             }
           ]
        }
       ],
       ...,
       "volumes": [
           {
               "name": "v1",
               "persistentVolumeClaim": {
                    "claimName": "testvolume"
               }
           }
         ]
      }
    }
    

    【讨论】:

    • 嘿,谢谢你写的答案,我也在尝试我这边的相同形式。我希望它可以为挂载路径提供相同的名称并将相同的 PVC 分配给两个挂载点。但你能告诉我subpath ???
    • 我已经在我的配置文件volumeMounts: - name: core-data mountPath: /app - name: core-data mountPath: /response-sheet-history imagePullPolicy: Always volumes: - name: core-data persistentVolumeClaim: claimName: core-claim
    • 当我附上 PVC 时,它会变空。
    • 你可以找到更多关于subPath的信息here
    【解决方案2】:

    对于挂载点的东西,你不需要处理PVC,而是在部署yaml 中处理PVs 和volumeMounts。来自Docs

    聚氯乙烯

    PersistentVolumeClaim (PVC) 是用户的存储请求。它 类似于 pod。

    PV

    PersistentVolume (PV) 是集群中的一块存储,具有 由管理员配置。

    是的,你可以这样做。只需创建 PV(或不必,取决于集群配置。PV 将从 PVC 创建)并在您的部署中指定 volumeMounts

    在我的仓库中查看我的 yaml 文件

    【讨论】:

      猜你喜欢
      • 2020-08-07
      • 2019-08-24
      • 2021-10-26
      • 2017-07-21
      • 2018-08-25
      • 2023-03-18
      • 2018-11-21
      • 1970-01-01
      • 2016-04-18
      相关资源
      最近更新 更多