首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一个卷中每个荚的动态卷配置文件夹?

一个卷中每个荚的动态卷配置文件夹?
EN

Stack Overflow用户
提问于 2020-07-24 15:42:19
回答 1查看 689关注 0票数 0

我的目标是使用volumeClaimsTemplate在StatefulSet中创建一个在卷内创建的文件夹(荚名)。

一个例子是:

  • PersistentVolume = "/data“
  • 豆荚:
    • pod-0 =“/data/po-0”
    • pod-1 =“/data/po-1”

我正在努力获得副本,为自己创建新的文件夹。对如何做到这一点的任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-28 10:39:44

volumeClaimTemplates是允许豆荚引用的声明列表。StatefulSet控制器负责将网络标识映射到声明中,以维护吊舱的标识。此列表中的每个声明必须在模板中的一个容器中至少有一个匹配(按名称) volumeMount。此列表中的声明优先于模板中具有相同名称的任何卷。

这意味着使用volumeClaimTemplates,您可以动态地从存储类请求PVC。

如果我们使用这个yaml作为例子:

代码语言:javascript
复制
volumeClaimTemplates: 
  - metadata: 
      name: www
    spec: 
      accessModes: ["ReadWriteOnce"]
      storageClassName: "standard"
      resources: 
        requests: 
          storage: 1Gi

一旦你部署好你的豆荚,你就会注意到你的豆荚正在被创建,并且在创建过程中PVC被请求。PVC是以下约定中的名称:

volumeClaimTemplate名称+ Pod-name + Ordinal-number

因此,如果以上述yaml为例,您将收到三个PVC (假设有3个副本):

代码语言:javascript
复制
NAME        STATUS      VOLUME      
www-web-0   Bound       pvc-12d77135...
www-web-1   Bound       pvc-08724947...
www-web-2   Bound       pvc-50ac9f96

值得一提的是,Persistent Volume Claims代表了特定Pod对持久性卷的独占使用。这意味着,如果我们单独查看各卷,就会发现每一卷都分配给了一个特定的荚:

代码语言:javascript
复制
➜ ~ pwd
/tmp/hostpath-provisioner/pvc-08724947...
➜ ~ ls 
web-1
➜ ~ pwd
/tmp/hostpath-provisioner/pvc-50ac9f96...
➜ ~ ls 
web-2

在测试时,我确实实现了您的目标,但我必须手动创建persistentvolumes,它们必须指向相同的本地路径:

代码语言:javascript
复制
 local:
    path: /home/docker/data
  nodeAffinity:
    required:
      nodeSelectorTerms:
        - matchExpressions:
            - key: kubernetes.io/hostname
              operator: In
              values:
                - minikube

这与subPathExpr相结合,将以荚命名的目录挂载到指定的路径中。

代码语言:javascript
复制
    volumeMounts:
    - name: www
      mountPath: /usr/share/nginx/html
      subPathExpr: $(NAME)
    env:
      - name: NAME
        valueFrom: 
          fieldRef:
             fieldPath: metadata.name

其结果(web是部署的名称):

代码语言:javascript
复制
➜ ~ pwd
/home/docker/data
➜ ~ pwd
web-0  web-1  web-2

这里有更多关于带有展开env变量的子路径如何工作的信息。

使用subPathExpr字段从向下的API环境变量构造subPath目录名。此特性要求启用VolumeSubpathEnvExpansion 特征门。默认情况下,从Kubernetes 1.15开始启用它。subPathsubPathExpr属性是相互排斥的。

如果你有任何问题,请告诉我。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63076923

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档