Kubernetes PVC 卷挂载

Har*_*var 0 docker kubernetes

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

我的码头文件是这样的:

FROM python:3.5 AS python-build
ADD . /test
WORKDIR /test
Run Code Online (Sandbox Code Playgroud)

在测试目录中,我正在执行此测试文件夹中的所有文件。

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

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

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

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

是否有可能有两个安装路径但一个 pvc?

小智 5

据我了解,您希望将测试目录作为 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"
Run Code Online (Sandbox Code Playgroud)

并且您可以使用此 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"
           }
       }
     ]
  }
}
Run Code Online (Sandbox Code Playgroud)