Kubernetes - how to download a PersistentVolume's content

早过忘川 提交于 2019-12-21 11:07:11

问题


I have a test executor Pod in K8s cluster created through helm, which asks for a dynamically created PersistentVolume where it stores the test results.

Now I would like to get the contents of this volume. It seems quite natural thing to do. I would expect some kubectl download pv <id>. But I can't google up anything.

How can I get the contents of a PersistentVolume?

I am in AWS EKS; so AWS API is also an option. Also I can access ECR so perhaps I could somehow store it as an image and download?

Or, in general, I am looking for a way to transfer a directory, can be even in an archive. But It should be after the container finished and doesn't run anymore.


回答1:


I can think about two options to fulfill your needs:

1) create a pod with the PV attached to it and use kubectl cp to copy the contents wherever you need. You could for example use a PodSpec similar the following:

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

Please note that mypvc should be the name of the PersistentVolumeClaim that is bound to the PV you want to copy data from.

Once the pod is running, you can run something like this to copy the data from any machine that has kubectl configured to connect to your cluster:

kubectl cp dataaccess:/data data/

2) mount the PV's EBS volume in an EC2 instance and copy the data from there. This case is less simple to explain in detail because it needs a little more context about what you're trying to achieve.



来源:https://stackoverflow.com/questions/50375826/kubernetes-how-to-download-a-persistentvolumes-content

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!