Kubernetes PVC卷安装架

时间:2019-05-23 06:46:56

标签: docker kubernetes

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

我的docker文件就像:

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

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

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

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

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

所以我可以使用mountpath将添加文件夹附加到pvc吗?

可能有两个mountpath但一个pvc吗?

2 个答案:

答案 0 :(得分:3)

据我了解,您希望将测试目录作为安装路径包括在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"
           }
       }
     ]
  }
}

答案 1 :(得分:1)

对于安装点而言,您无需处理PVC,但可以处理部署Yaml中的PVvolumeMounts。来自Docs

PVC

  

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

PV

  

PersistentVolume(PV)是群集中具有以下内容的一块存储   由管理员提供。

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

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