【问题标题】:Kubernetes. Is it possible to mount volume to path containing pod id?Kubernetes。是否可以将卷安装到包含 pod id 的路径?
【发布时间】:2020-02-11 08:22:10
【问题描述】:

我想定义 pvc 并创建卷,以便从外部容器中获取一些内部文件(我正在使用 helm 图表定义)。我想知道有什么方法可以在我在 deployment.yaml 中定义的 mountPath 中使用 POD IP。

最后我想在我的节点中获取文件夹结构 /dockerdata-nfs//路径

volumeMounts:
     - name: volumeName
       mountPath: /abc/path

volumes:
    - name: volumeName
      hostPath:
        path: /dockerdata-nfs/podID/

【问题讨论】:

  • 你写了POD IPpodID,现在我不确定你到底想做什么。第二件事是你写了... use POD IP in mountPath ...,但是当我查看你提供的部署部分时,有podID(假设这些指的是同一件事,但你拼错了一些东西)但它在hostPath.path下。你能把你的问题编辑成明确的吗?

标签: kubernetes deployment kubernetes-helm kubernetes-pvc


【解决方案1】:

娱乐的 POD 将获得一个新的 UID,那你为什么要尝试硬编码这个值!!

Pods 被认为是相对短暂(而不是持久)的实体。正如 pod 生命周期中所讨论的,Pod 被创建、分配一个唯一 ID (UID),并被调度到它们一直保留的节点,直到终止(根据重启策略)或删除。如果一个节点死亡,则计划到该节点的 Pod 会在超时后被计划删除。给定的 Pod(由 UID 定义)不会“重新调度”到新节点;相反,它可以替换为相同的 Pod,如果需要,甚至可以使用相同的名称,但使用新的 UID(有关详细信息,请参阅复制控制器)。

【讨论】:

  • 我的主要目的是将一些文件从 pod 提取到主机上的某个文件夹中。但是我需要以某种方式在 pod 之间分隔文件。例如,我有 2 个 pod 副本,我想将文件(同名)放到不同的位置。我不想对 podID 进行硬编码,我只是询问是否可以选择放置一些将在部署时解析的变量。
  • 那么您应该使用 subPath 共享卷,您可以将 subPath 值映射到您的容器名称,我相信这将是静态的。
  • 但是每个副本号的容器名称都相同吗?
  • 对 .. 你能否让你的问题更清楚地说明你正在使用复制集/部署 ..
  • 是部署
【解决方案2】:

您可以使用subPathExpr 创建基于 POD UID 的 mountPath。下面的yaml: apiVersion: v1 kind: Pod metadata: name: pod1 spec: containers: - name: container1 env: - name: UID valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.uid image: busybox volumeMounts: - name: workdir1 mountPath: /logs subPathExpr: $(UID) volumes: - name: workdir1 hostPath: path: /var/log/pods 此功能是在 Kubernetes 1.14+ 版本中引入的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-13
    • 2013-07-08
    相关资源
    最近更新 更多