J'essaie de faire fonctionner un serveur de jeux Factorio sur Kubernetes (hébergé sur GKE).
J'ai configuré un jeu avec état avec une revendication de volume persistant et je l'ai monté dans le répertoire de sauvegarde du serveur de jeu.
Je souhaite télécharger un fichier de sauvegarde de mon ordinateur local vers cette réclamation de volume persistant afin de pouvoir accéder à la sauvegarde sur le serveur de jeu.
Quel serait le meilleur moyen de télécharger un fichier sur cette revendication de volume persistant?
J'ai pensé à 2 manières mais je ne suis pas sûr de ce qui est le meilleur ou si l'une ou l'autre sont une bonne idée:
Il s'avère qu'il existe un moyen beaucoup plus simple: la commande kubectl cp
.
Cette commande vous permet de copier des données de votre ordinateur vers un conteneur s'exécutant sur votre cluster.
Dans mon cas j'ai couru:
kubectl cp ~/.factorio/saves/k8s-test.Zip factorio/factorio-0:/factorio/saves/
Cela a copié le fichier k8s-test.Zip
sur mon ordinateur vers /factorio/saves/k8s-test.Zip
dans un conteneur s'exécutant sur mon cluster.
Voir kubectl cp -h
pour plus d'informations détaillées sur l'utilisation et des exemples.
Vous pouvez simplement utiliser Google Cloud Storage ( https://cloud.google.com/storage/ ) car vous envisagez de fournir quelques fichiers.
L'autre option consiste à utiliser PersistenVolumeClaims. Cela fonctionnera mieux si vous ne mettez pas à jour les fichiers fréquemment, car vous devrez alors détacher le disque des pods (vous devrez donc supprimer les pods).
Vous pouvez créer un disque persistant GCE, le connecter à une machine virtuelle GCE, y placer des fichiers, puis supprimer le VM et amener le PD sur Kubernetes en tant que PersistentVolumeClaim. Il existe une documentation sur la procédure à suivre: https://cloud.google.com/kubernetes-engine/docs/concepts/persistent-volumes#using_preexsiting_persistent_disks_as_persistentvolumes
Vous pouvez créer un dossier de données sur votre compte GoogleCloud:
gcloud compute ssh <your cloud> <your zone>
mdkir data
Ensuite, créez 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"
Créez 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
Ensuite, copiez le fichier sur GCloud:
gcloud compute scp <your file> <your cloud> <your zone>
Et montez enfin cette PersistentVolumeClaim sur votre pod:
...
volumeMounts:
- name: hostpath-pvc
mountPath: <your-path>
subPath: hostpath-pvc
volumes:
- name: hostpath-pvc
persistentVolumeClaim:
claimName: hostpath-pvc
Et copier le fichier dans data-folder dans GGloud:
gcloud compute scp <your file> <your cloud>:/home/<user-name>/data/hostpath-pvc <your zone>