如何将PVC的子路径挂载到容器中的特定路径

Kan*_*ane 2 kubernetes-helm

我有云提供商提供的存储。它能够通过 PVC 将存储安装到容器上。

有没有办法指定磁盘的子路径然后挂载到容器的特定路径。

我尝试了如下的自定义值,但它不起作用。

Persistence:
  Enabled: true
  ## A manually managed Persistent Volume and Claim
  ## Requires Persistence.Enabled: true
  ## If defined, PVC must be created manually before volume will be bound
  ExistingClaim: ci-jenkins-data

  ## jenkins data Persistent Volume Storage Class
  ## If defined, storageClassName: <storageClass>
  ## If set to "-", storageClassName: "", which disables dynamic provisioning
  ## If undefined (the default) or set to null, no storageClassName spec is
  ##   set, choosing the default provisioner.  (gp2 on AWS, standard on
  ##   GKE, AWS & OpenStack)
  ##
  # StorageClass: "-"

  Annotations: {}
  AccessMode: ReadWriteOnce
  Size: 100Gi
  volumes:
    - name: ci-jenkins-data
      mountPath: /var/jenkins_home
      subPath: /volume/jenkins
Run Code Online (Sandbox Code Playgroud)

Sud*_*NSR 9

由于一个 PVC 只能声明一次,我假设您想在单个 pod 中的卷中挂载子文件夹。我在volumeMounts部分中指定了子路径,如下所示。

apiVersion: v1
kind: Pod
metadata:
  name: my-lamp-site
spec:
    containers:
    - name: mysql
      image: mysql
      env:
      - name: MYSQL_ROOT_PASSWORD
        value: "rootpasswd" 
      volumeMounts:
      - mountPath: /var/lib/mysql
        name: site-data
        subPath: mysql
    - name: php
      image: php:7.0-apache
      volumeMounts:
      - mountPath: /var/www/html
        name: site-data
        subPath: html
    volumes:
    - name: site-data
      persistentVolumeClaim:
        claimName: my-lamp-site-data
Run Code Online (Sandbox Code Playgroud)

上面的代码片段是从https://kubernetes.io/docs/concepts/storage/volumes/#using-subpath复制的

我确信您可能已经尝试过 hostpath,但是 1.9 原始块卷支持可能会对您的情况有所帮助。

让我知道这是否有帮助。

问候苏达卡