在GKE容器中将文件存储在哪里?

时间:2019-07-28 20:06:51

标签: kubernetes google-cloud-platform google-kubernetes-engine google-container-os

我无法理解将文件存储在GKE容器中的什么位置?我看过以下有关文件系统布局的文档:

https://cloud.google.com/kubernetes-engine/docs/concepts/node- images#file_system_layout

但是网上也有Dockerfile示例,它们将可执行文件复制到布局中未列出的其他路径,例如/usr/go。这些示例之一在这里:

https://github.com/GoogleCloudPlatform/kubernetes-engine-samples/blob/master/hello-app/Dockerfile

另一个问题是:如果在容器启动后,如果我有运行时代码需要下载某些配置信息,我可以将配置文件写入可执行文件所在的目录吗?还是我必须选择/etc/tmp

最后,布局文档指出/home/var在引导磁盘的生存期内存储数据吗?这意味着什么?与pod或节点的生存期相比如何?

2 个答案:

答案 0 :(得分:0)

当您要将某些东西存储在容器中时,可以存储临时的或永久的

  • 要存储临时方式,只需选择路径/tmp/var/opt等(这也取决于容器的设置),则在容器重新启动后,创建容器时,您拥有的信息是相同的,例如您的二进制文件和初始配置文件。

  • 要存储永久性文件,必须安装一个卷,这是对您的容器的支持,在该容器中,一个卷(容器路径)与外部存储器链接。这样,如果您的容器重新启动,则一旦容器再次准备就绪,卷将被挂载,您将不会丢失任何东西。

在kubernetes中,这称为Persistent Volumes,即使您在另一个云提供商中,也可以利用它

使用步骤

示例

将体积与容器链接

volumeMounts:
  - mountPath: /myfiles/private
    name: any-name-you-want

将持久卷与您的部署相关

volumes:
  - name: any-name-you-want
    persistentVolumeClaim:
    claimName: my-claim-name

答案 1 :(得分:0)

这完全取决于您。默认情况下,大多数基本映像将按照正常方式保留/tmp可写。但是,如果/由于某种原因重新启动容器时,写入容器内部的所有内容都将消失。对于诸如配置数据之类的东西,这可能很好,而对于数据库,则可能不那么好。为了获得更稳定的存储,您需要使用卷。使用的确切类型取决于您的环境以及数据应保留多长时间。 emptyDir卷的寿命仅与容器相同,但可以在同一容器中的容器之间共享。除此之外,您可能会使用PersistentVolumeClaim动态设置新的Google Cloud磁盘,除非删除声明(或者永久取决于您的Reclaim设置),否则该磁盘将持续使用。