【发布时间】:2020-08-26 17:56:20
【问题描述】:
将文件注入 Pod 的最佳方法是什么? 我使用 configMap 完成了它,但现在我有一个大于 1MB 的 xml 文件,因此需要找到其他方法。该文件在 git 存储库中可用。
【问题讨论】:
标签: kubernetes kubernetes-pod configmap
将文件注入 Pod 的最佳方法是什么? 我使用 configMap 完成了它,但现在我有一个大于 1MB 的 xml 文件,因此需要找到其他方法。该文件在 git 存储库中可用。
【问题讨论】:
标签: kubernetes kubernetes-pod configmap
正如@Arghya Sadhu 提到的那样
有一个名为 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 在节点重新启动时会被清除,并且您写入的任何文件都将计入容器的内存限制。
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 存储的信息,请查看此处:
【讨论】: