Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes清单中主机路径中的POD特定文件夹_Kubernetes_Kubernetes Helm - Fatal编程技术网

Kubernetes清单中主机路径中的POD特定文件夹

Kubernetes清单中主机路径中的POD特定文件夹,kubernetes,kubernetes-helm,Kubernetes,Kubernetes Helm,我对Kubernetes还很陌生,需要一些帮助 我使用的是StatefulSet和3个副本。有2个工作节点 我希望为每个副本提供单独的主机路径,而不是硬编码的主机路径。此外,工作节点上的主机路径为“本地” 例如— volumeMounts: - mountPath: /usr/local/store name: store volumes: - name: store hostPath: path: /space/myapp/$(POD_NAME)

我对Kubernetes还很陌生,需要一些帮助

我使用的是StatefulSet和3个副本。有2个工作节点

我希望为每个副本提供单独的主机路径,而不是硬编码的主机路径。此外,工作节点上的主机路径为“本地”

例如—

  volumeMounts:
    - mountPath: /usr/local/store
      name: store
volumes:
  - name: store
    hostPath:
      path: /space/myapp/$(POD_NAME)
此处的POD_名称为app-0、app-1、app-2(3个副本)。
我们可以在多个工作节点上创建/space/myapp/app-0、/space/myapp/app-1、/space/myapp/app-2

我读了一些书,没有找到任何明显的解决办法。
一种解决方案是不使用副本,而是创建3个具有自己硬编码主机路径的独立POD。但这是不可取的


你能告诉我,库伯内特斯有什么能帮我做到这一点?感谢您的帮助和指导。

您需要的是一个
状态集,它会带来它。由于需要
主机路径
,您的处境肯定会更糟,但是正式或以前的支持都可以帮助解决这个问题

我不是在讨论是否需要使用部署还是有状态 使用PVC模板进行设置,因为这超出了问题的范围- 尽管这可能有助于先研究清楚这一点

一种可能的解决方案是自己管理副本,而不是使用Kubernetes副本功能(因为“一切”都没有被复制)。在标记了问题“kubernetes头盔”之后,我假设您可以使用头盔模板

您可以通过以下方式实现所需:

  • values.yaml
    文件中定义所有非通用pod属性
  • 指示性代码:

    chartname:
      pods:
      - name: pod1
        path: volumeHostpathForPod1
      - name: pod2
        path: volumeHostpathForPod2
      ...etc
    
  • 在您的
    图表名/templates/pod.yaml
    (或等效文件)中
  • 指示性代码:

    apiVersion: apps/v1beta1
    kind: StatefulSet
    metadata:
      name: "statefulset"
    ...(other stateful set properties)
    spec: #stateful set specs
      template:
        spec: #pod(s) specs
          containers:
    {{- range .Values.pods }}
          - ... (common pod properties) 
            name: "pod{{ .name }}"
            volumeMounts:
            - mountPath: /usr/local/store
            name: "storeForPod{{ .name }}"
    {{- end }}
          volumes:
    {{- range .Values.pods }}
          - name: "storeForPod{{ .name }}"
            hostPath:
              path: "/space/myapp/{{ .path }}"
    {{- end }}
    
  • 使用头盔生成最终Kubernetes规格。例如:命令:
    helm install./chartname-f values.yaml

  • 谢谢你的回复。但我不知道如何制作PVC模板,使其基于POD的名称,例如app-0、app-1等。或者我遗漏了什么?感谢您的回复。您的建议(不使用Kubernetes副本)是一个选项,但它对我不起作用,因为副本的最终计划大小/副本将放大/缩小等。