【问题标题】:What is the best way to inject a file into a Pod?将文件注入 Pod 的最佳方法是什么?
【发布时间】:2020-08-26 17:56:20
【问题描述】:

将文件注入 Pod 的最佳方法是什么? 我使用 configMap 完成了它,但现在我有一个大于 1MB 的 xml 文件,因此需要找到其他方法。该文件在 git 存储库中可用。

【问题讨论】:

    标签: kubernetes kubernetes-pod configmap


    【解决方案1】:

    正如@Arghya Sadhu 提到的那样

    您可以将其存储在 volumemount 中,该卷存储到 pod 中。


    有一个名为 gitRepo 的存储可能是您的最佳解决方案,但现在它已被弃用。

    警告:不推荐使用 gitRepo 卷类型。要使用 git repo 配置容器,请将 EmptyDir 挂载到使用 git 克隆 repo 的 InitContainer 中,然后将 EmptyDir 挂载到 Pod 的容器中。

    空目录

    emptyDir 卷在将 Pod 分配给 Node 时首先创建,并且只要该 Pod 在该节点上运行就存在。顾名思义,它最初是空的。 Pod 中的容器都可以在 emptyDir 卷中读取和写入相同的文件,尽管该卷可以安装在每个容器中相同或不同的路径上。当 Pod 因任何原因从节点中移除时,emptyDir 中的数据将被永久删除。

    注意:Container 崩溃不会从节点中删除 Pod,因此 emptyDir 卷中的数据在 Container 崩溃时是安全的。

    emptyDir 的一些用途是:

    • 暂存空间,例如用于基于磁盘的合并排序
    • 检查点长时间计算以从崩溃中恢复
    • 保存内容管理器容器获取的文件,而 webserver 容器提供数据

    默认情况下,emptyDir 卷存储在支持节点的任何介质上——可能是磁盘、SSD 或网络存储,具体取决于您的环境。但是,您可以将 emptyDir.medium 字段设置为“Memory”,以告诉 Kubernetes 为您安装一个 tmpfs(RAM 支持的文件系统)。虽然 tmpfs 非常快,但请注意,与磁盘不同,tmpfs 在节点重新启动时会被清除,并且您写入的任何文件都将计入容器的内存限制。

    示例 Pod

    apiVersion: v1
    kind: Pod
    metadata:
      name: test-pd
    spec:
      containers:
      - image: k8s.gcr.io/test-webserver
        name: test-container
        volumeMounts:
        - mountPath: /cache
          name: cache-volume
      volumes:
      - name: cache-volume
        emptyDir: {}
    

    检查此 stackoverflow answer,因为它可能是您正在寻找的解决方案。


    如果您想了解更多关于 kubernetes 存储的信息,请查看此处:

    【讨论】:

      【解决方案2】:

      您可以将它存储在一个 volumemount 该卷中到 pod 中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-09-01
        • 1970-01-01
        • 2014-12-15
        • 2022-09-23
        • 2023-03-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多