【问题标题】:Use Pod name or uid in Volume mountPath在 Volume mountPath 中使用 Pod 名称或 uid
【发布时间】:2020-08-03 03:58:18
【问题描述】:

我有一个 NFS 物理卷,我的 pod 都可以通过 PVC 访问它,文件在 pod 被销毁后保留。

我希望每个 pod 都能够将其文件放在唯一的子目录下。

无论如何我可以在容器的mountPath 中动态使用metadata.uidmetadata.name 吗?即在概念上是这样的:

volumeMounts:

  - name: persistent-nfs-storage
    mountPath: /metadata.name/files

我想我可以通过使用初始化容器并使用向下 API 将值放入环境中来了解如何处理首先创建目录。但我没有看到任何在 PVC mountPath 中使用它的方法。

感谢您的帮助。

【问题讨论】:

    标签: kubernetes


    【解决方案1】:

    我不知道是否可以在 Volume mountPath 中使用 Pod Name。但是,如果打算将文件写入同一 PVC 的单独文件夹(使用 pod 名称),则有一些解决方法。

    实现它的一种方法是从 env 获取文件路径和 pod 名称,然后附加它们。之后将日志写入该目录。

    详细一点,

    volumeMounts:
    - name: persistent-nfs-storage
      mountPath: /nfs/directory
    

    环境变量:

    env:
    - name: WRITE_PATH
      value: "$(NFS_DIR)/$(POD_NAME)"
    - name: NFS_DIR
      value: /nfs/directory
    - name: POD_NAME
      valueFrom:
        fieldRef:
          fieldPath: metadata.name
    

    在应用程序中,使用$WRITE_PATH 目录来编写您需要的文件。此外,如有必要,从 init 容器创建此目录。

    【讨论】:

    • 谢谢,这似乎是通过解决方法来处理它的方法。我还想到我可以使用主机名,这实际上是唯一的 podname,已经由 k8s 放入环境中,而无需执行任何额外的步骤。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-30
    • 2022-01-08
    • 1970-01-01
    • 2019-02-12
    • 2018-05-03
    • 2020-02-02
    • 2021-12-25
    相关资源
    最近更新 更多