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
Docker 将文件放置在GKE上的Kubernetes持久卷存储中_Docker_Kubernetes_Google Cloud Platform_Google Kubernetes Engine - Fatal编程技术网

Docker 将文件放置在GKE上的Kubernetes持久卷存储中

Docker 将文件放置在GKE上的Kubernetes持久卷存储中,docker,kubernetes,google-cloud-platform,google-kubernetes-engine,Docker,Kubernetes,Google Cloud Platform,Google Kubernetes Engine,我正在尝试在Kubernetes上运行Factorio游戏服务器(托管在GKE上) 我已经设置了一个带有持久卷声明的有状态集,并将其挂载在游戏服务器的save目录中 我想从本地计算机上传一个保存文件到这个持久卷声明,这样我就可以访问游戏服务器上的保存 将文件上载到此永久卷声明的最佳方式是什么 我想到了两种方法,但我不确定哪一种是最好的,或者哪一种是好主意: 将包含我想要的文件的磁盘快照恢复到支持此持久卷声明的GCP磁盘 将永久卷声明装载到FTP容器上,通过FTP将文件上传,然后将其装载到游戏容

我正在尝试在Kubernetes上运行Factorio游戏服务器(托管在GKE上)

我已经设置了一个带有持久卷声明的有状态集,并将其挂载在游戏服务器的save目录中

我想从本地计算机上传一个保存文件到这个持久卷声明,这样我就可以访问游戏服务器上的保存

将文件上载到此永久卷声明的最佳方式是什么

我想到了两种方法,但我不确定哪一种是最好的,或者哪一种是好主意:

  • 将包含我想要的文件的磁盘快照恢复到支持此持久卷声明的GCP磁盘
  • 将永久卷声明装载到FTP容器上,通过FTP将文件上传,然后将其装载到游戏容器上

您只需使用Google Cloud Storage(),因为您正在考虑提供一些文件

另一个选项是使用PersistenVolumeClaims。如果您不经常更新文件,这将更好地工作,因为您需要在执行此操作时将磁盘与pod分离(因此需要删除pod)


您可以创建一个GCE永久磁盘,将其连接到GCE虚拟机,在其上放置文件,然后删除虚拟机,并将PD作为PersistentVolumeClaim提交给Kubernetes。有一个关于如何做到这一点的文档:

事实证明有一种更简单的方法:使用
kubectl cp
命令

此命令允许您将数据从计算机复制到集群上运行的容器

就我而言,我跑:

kubectl cp ~/.factorio/saves/k8s-test.zip factorio/factorio-0:/factorio/saves/
这将我的计算机上的
k8s test.zip
文件复制到集群上运行的容器中的
/factorio/saves/k8s test.zip


有关更多详细的使用信息和示例,请参见
kubectl cp-h

您可以在Google Cloud上创建数据文件夹:

gcloud compute ssh <your cloud> <your zone>
mdkir data
然后将文件复制到GCloud:

gcloud compute scp <your file> <your cloud> <your zone> 
gcloud计算scp
最后将此PersistentVolumeClaim装载到您的pod:

...
      volumeMounts:
       - name: hostpath-pvc
         mountPath: <your-path>
         subPath: hostpath-pvc  
  volumes:
    - name: hostpath-pvc
      persistentVolumeClaim:
        claimName: hostpath-pvc
。。。
体积数量:
-姓名:hostpath
安装路径:
子路径:主机路径
卷数:
-姓名:hostpath
persistentVolumeClaim:
索赔名称:hostpath pvc
并将文件复制到GGloud中的数据文件夹:

  gcloud compute scp <your file> <your cloud>:/home/<user-name>/data/hostpath-pvc <your zone>
gcloud compute scp:/home//data/hostpath

你好,艾哈迈特,谢谢你的回答。我如何将谷歌云存储连接到Kubernetes吊舱?使用持久卷声明的方法正是我想要的。感谢您提供该指南的链接。请参阅Kuberentes 1.12(2018年9月)为CSI提供的新快照/恢复功能:我一直在搜索类似的内容!为什么这没有列在备忘单上?
...
      volumeMounts:
       - name: hostpath-pvc
         mountPath: <your-path>
         subPath: hostpath-pvc  
  volumes:
    - name: hostpath-pvc
      persistentVolumeClaim:
        claimName: hostpath-pvc
  gcloud compute scp <your file> <your cloud>:/home/<user-name>/data/hostpath-pvc <your zone>