在GKE

时间:2018-06-05 15:24:15

标签: docker kubernetes google-cloud-platform google-kubernetes-engine

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

我已经设置了一个具有永久卷声明的状态集,并将其安装在游戏服务器的保存目录中。

我想将本地计算机上的保存文件上传到此持久卷声明,以便我可以访问游戏服务器上的保存。

将文件上传到此永久性卷声明的最佳方法是什么?

我想过两种方法,但我不确定哪种方法最好,或者两种方式都不错:

  • 将包含我想要的文件的磁盘快照还原到支持此持久卷声明的GCP磁盘
  • 在FTP容器上挂载持久卷声明,向上FTP文件,然后将其挂载到游戏容器中

3 个答案:

答案 0 :(得分:4)

事实证明,有一种更简单的方法: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

答案 1 :(得分:1)

您可以使用Google云端存储(https://cloud.google.com/storage/),因为您正在查看提供的几个文件。

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

您可以创建GCE永久磁盘,将其附加到GCE VM,将文件放在其上,然后删除VM并将PD作为PersistentVolumeClaim带到Kubernetes。有关于如何做到这一点的文档:https://cloud.google.com/kubernetes-engine/docs/concepts/persistent-volumes#using_preexsiting_persistent_disks_as_persistentvolumes

答案 2 :(得分:1)

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

gcloud compute ssh <your cloud> <your zone>
mdkir data

然后创建PersistentVolume:

kubectl create -f hostpth-pv.yml

kind: PersistentVolume
apiVersion: v1
metadata:
  name: pv-local
  labels:
    type: local
spec:
  storageClassName: local
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/home/<user-name>/data"

创建PersistentVolumeClaim:

kubectl create -f hostpath-pvc.yml

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: hostpath-pvc
spec:
  storageClassName: local
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi
  selector:
    matchLabels:
      type: local

然后将文件复制到GCloud:

gcloud compute scp <your file> <your cloud> <your zone> 

最后将这个PersistentVolumeClaim挂载到您的pod:

...
      volumeMounts:
       - name: hostpath-pvc
         mountPath: <your-path>
         subPath: hostpath-pvc  
  volumes:
    - name: hostpath-pvc
      persistentVolumeClaim:
        claimName: hostpath-pvc

然后将文件复制到GGloud中的数据文件夹中:

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