0

我无法理解在 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 或节点的生命周期相比如何?

4

2 回答 2

1

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

  • 要存储短暂的方式,只需选择一个路径/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
于 2019-07-28T23:13:03.440 回答
0

这真的取决于你。默认情况下,大多数基本图像将按/tmp正常方式保持可写状态。但是,如果/当容器因任何原因重新启动时,容器内写入的任何内容都将消失。对于像配置数据这样的东西,这可能很好,对于数据库可能不太好。要获得更稳定的存储,您需要使用 Volume。要使用的确切类型取决于您的环境以及数据的生存时间。卷的emptyDir寿命与 pod 一样长,但可以在同一个 pod 中的容器之间共享。除此之外,您可能会使用 PersistentVolumeClaim 动态配置一个新的 Google Cloud 磁盘,除非声明被删除(或永远取决于您的 Reclaim 设置),否则该磁盘将持续存在。

于 2019-07-28T23:14:58.237 回答