web-dev-qa-db-ja.com

Kubernetes-PersistentVolumeのコンテンツをダウンロードする方法

Helmを介して作成されたK8sクラスターにテストエグゼキューターPodがあります。これは、動的に作成されたPersistentVolumeを要求し、テスト結果を保存します。

今、このボリュームの内容を入手したいと思います。するのはかなり自然なことのようです。いくつか期待しますkubectl download pv <id>。しかし、私は何もググることはできません。

PersistentVolumeの内容を取得するにはどうすればよいですか?

私はAWS EKSにいます。 AWS APIもオプションです。また、ECRにアクセスできるので、おそらくそれをイメージとして保存してダウンロードできますか?

または、一般的に、ディレクトリを転送する方法を探しています。アーカイブ内でも可能です。しかし、それは後でコンテナが終了し、実行されなくなるはずです。

10
Ondra Žižka

私はあなたのニーズを満たすために2つのオプションを考えることができます:

1)PVが接続されたポッドを作成し、kubectl cp必要な場所にコンテンツをコピーします。たとえば、次のようなPodSpecを使用できます。

apiVersion: v1
kind: Pod
metadata:
  name: dataaccess
spec:
  containers:
  - name: Alpine
    image: Alpine:latest
    command:
    - sleep
    - 999999
    volumeMounts:
    - name: mypvc
      mountPath: /data
  volumes:
  - name: mypvc
    persistentVolumeClaim:
      claimName: mypvc

Mypvcは、データのコピー元のPVにバインドされているPersistentVolumeClaimの名前である必要があることに注意してください。

ポッドが実行されたら、次のようなものを実行して、kubectlがクラスターに接続するように構成されている任意のマシンからデータをコピーできます。

kubectl cp dataaccess:/data data/

2)PVのEBSボリュームをEC2インスタンスにマウントし、そこからデータをコピーします。このケースは、達成しようとしていることについてもう少しコンテキストが必要なため、詳細を説明するのは簡単ではありません。

15
whites11