Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes 在GKE容器中的何处存储文件?_Kubernetes_Google Cloud Platform_Google Kubernetes Engine_Google Container Os - Fatal编程技术网

Kubernetes 在GKE容器中的何处存储文件?

Kubernetes 在GKE容器中的何处存储文件?,kubernetes,google-cloud-platform,google-kubernetes-engine,google-container-os,Kubernetes,Google Cloud Platform,Google Kubernetes Engine,Google Container Os,我很难理解在GKE容器中存储文件的位置?我已经看到了文件系统布局的以下文档: 但是,web上也有Dockerfile示例,它们将可执行文件复制到布局中未列出的其他路径,例如/usr或/go。其中一个例子如下: 另一个问题是:如果我有运行时代码,需要在容器启动后下载某些配置信息,那么我可以将配置文件写入与可执行文件相同的目录吗?或者我必须选择/etc或/tmp 最后,布局文档指出,/home和/var存储引导磁盘生命周期内的数据?这是什么意思?这与pod或节点的生存期相比如何?当您想在容器中存

我很难理解在GKE容器中存储文件的位置?我已经看到了文件系统布局的以下文档:

但是,web上也有Dockerfile示例,它们将可执行文件复制到布局中未列出的其他路径,例如
/usr
/go
。其中一个例子如下:

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


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

当您想在容器中存储某些内容时,您可以存储短暂或永久的内容

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

  • 要存储永久存储,必须装载卷,这是对容器的支持,其中卷(容器路径)与外部存储链接。这样,如果容器重新启动,一旦容器再次准备好,卷将被装入,您不会丢失任何东西

在kubernetes中,这被称为
持久卷
,即使您在另一个云提供商中,您也可以利用它

使用的步骤

  • 在源代码示例中定义装入卷的路径
    /myfiles/private
  • 在GKE中创建一个存储类
  • 在GKE中创建持久卷声明
  • 将此存储类与Kubernetes部署关联
范例

将卷与容器链接

volumeMounts:
  - mountPath: /myfiles/private
    name: any-name-you-want
将持久卷与部署关联起来

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

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

感谢我的案例,即使容器重新启动,它也可能是短暂的,我不需要在pod中的容器之间共享。我仍然不完全清楚文档化文件系统布局属性的含义。也许我会猜测,它将允许容器映像将文件复制到任何路径,但一旦容器开始运行,文件权限就如文档所示。例如,如果dockerfile在/usr下创建了一个文件夹和文件,那就可以了。但一旦它开始运行,它就拥有文档化路径“/”的权限。是这样吗?不,没有任何特殊路径,除非您自己设置卷装载。否则图像就是图像。谢谢,你是正确的。我将hello world节点应用程序部署到
usr/src/app
目录,节点应用程序本身在运行时会向该目录写入一个文件。这不是问题。我不理解布局上的文档页面。似乎我可以忽略这些信息。您正在查看GKE节点的文档,即运行Kubernetes的虚拟机,与容器无关。谢谢@cperez08。为了进一步澄清我的问题,我对前面的答案发表了评论。