40

Pod在通过 helm 创建的 K8s 集群中有一个测试执行器,它要求动态创建PersistentVolume它存储测试结果的位置。

现在我想得到这卷的内容。这似乎是很自然的事情。我会期待一些kubectl download pv <id>。但我无法谷歌搜索任何东西。

如何获取 a 的内容PersistentVolume

我在 AWS EKS;所以 AWS API 也是一种选择。我也可以访问 ECR,所以也许我可以以某种方式将其存储为图像并下载?

或者,一般来说,我正在寻找一种传输目录的方法,甚至可以在存档中。但它应该容器完成并且不再运行之后。

4

1 回答 1

49

我可以考虑两种选择来满足您的需求:

  1. 创建一个附有 PV 的 pod,并用于kubectl cp在任何需要的地方复制内容。例如,您可以使用PodSpec类似于以下内容:
apiVersion: v1
kind: Pod
metadata:
  name: dataaccess
spec:
  containers:
  - name: alpine
    image: alpine:latest
    command: ['sleep', 'infinity']
    volumeMounts:
    - name: mypvc
      mountPath: /data
  volumes:
  - name: mypvc
    persistentVolumeClaim:
      claimName: mypvc

请注意,它mypvc应该PersistentVolumeClaim是绑定到要从中复制数据的 PV 的名称。

pod 运行后,您可以运行如下所示的内容,从已kubectl配置为连接到集群的任何机器上复制数据:

kubectl cp dataaccess:/data data/
  1. 在 EC2 实例中挂载 PV 的 EBS 卷并从那里复制数据。这种情况不太容易详细解释,因为它需要更多关于您要实现的目标的上下文。
于 2018-05-16T23:12:02.097 回答