Размещение файлов в постоянном хранилище томов Kubernetes на GKE - PullRequest
0 голосов
/ 05 июня 2018

Я пытаюсь запустить игровой сервер Factorio в Kubernetes (размещенный на GKE).

Я установил набор с сохранением состояния с сохранением тома и смонтировал его в каталоге сохранения игрового сервера.

Я хотел бы загрузить файл сохранения с моего локального компьютера в эту заявку о сохранении тома, чтобы получить доступ к сохранению на игровом сервере.

Как лучше всего загрузить файл в эту заявку о постоянных томах?

Я подумал о двух способах, но не уверен, какой из них лучше, или если это хорошая идея:

  • Восстановите моментальный снимок диска с файлами, которые я хочу, на диск GCP, который поддерживает эту заявку о постоянных томах
  • Смонтируйте заявку о постоянных томах в контейнер FTP, FTP файлы вверх,а затем смонтировать его на игровой контейнер

Ответы [ 3 ]

0 голосов
/ 07 июня 2018

Оказывается, есть гораздо более простой способ: команда 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 для более подробной информации и примеров использования.

0 голосов
/ 21 августа 2018

Вы можете создать папку данных в своем 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 к вашему модулю:

...
      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>
0 голосов
/ 06 июня 2018

Вы можете просто использовать Google Cloud Storage (https://cloud.google.com/storage/), так как вы рассматриваете возможность обслуживания нескольких файлов.

Другой вариант - использовать PersistenVolumeClaims. Это будет работать лучше, если выне часто обновляя файлы, потому что вам нужно будет отсоединить диск от модулей (поэтому вам нужно удалить модули) при этом.

Вы можете создать постоянный диск GCE, подключить его к виртуальной машине GCE,поместите на него файлы, затем удалите виртуальную машину и перенесите PD в Kubernetes как PersistentVolumeClaim. Есть документ о том, как это сделать: https://cloud.google.com/kubernetes-engine/docs/concepts/persistent-volumes#using_preexsiting_persistent_disks_as_persistentvolumes

...