web-dev-qa-db-ja.com

GKE上のKubernetes永続ボリュームストアへのファイルの配置

Kubernetes(GKEでホスト)でFactorioゲームサーバーを実行しようとしています。

Persistent Volume Claimを使用してステートフルセットをセットアップし、ゲームサーバーの保存ディレクトリにマウントしました。

ゲームサーバー上の保存にアクセスできるように、ローカルコンピューターからこの永続的なボリューム要求に保存ファイルをアップロードしたいと思います。

この永続的なボリューム要求にファイルをアップロードする最良の方法は何ですか?

私は2つの方法を考えましたが、どちらがベストか、どちらかが良いアイデアかどうかはわかりません:

  • この永続的ボリューム要求をバックアップするGCPディスクに、必要なファイルを含むディスクスナップショットを復元します
  • 永続ボリューム要求をFTPコンテナーにマウントし、ファイルをFTPでアップロードしてから、ゲームコンテナーにマウントします
7
Noah Huppert

はるかに簡単な方法があることがわかりました: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より詳細な使用情報と例については。

8
Noah Huppert

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>
3
Andrey

いくつかのファイルを提供しているので、Google Cloud Storage( https://cloud.google.com/storage/ )を使用できます。

もう1つのオプションは、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

1
AhmetB - Google