Kubernetes - 如何下载 PersistentVolume 的内容
Kubernetes - how to download a PersistentVolume's content
我在通过 helm 创建的 K8s 集群中有一个测试执行器 Pod
,它要求动态创建 PersistentVolume
用于存储测试结果。
现在我想获取本卷的内容。这似乎是很自然的事情。
我希望有一些 kubectl download pv <id>
。但是我什么都不能google。
如何获取PersistentVolume
的内容?
我在 AWS EKS;所以 AWS API 也是一个选项。我也可以访问 ECR,所以也许我可以以某种方式将它存储为图像并下载?
或者,一般来说,我正在寻找一种传输目录的方法,甚至可以在存档中。但它应该是 在 容器完成并且不再 运行 之后。
我可以考虑两种方案来满足您的需求:
- 创建一个附加了 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
应该是绑定到要从中复制数据的 PV 的 PersistentVolumeClaim
的名称。
一旦 pod 运行ning,您可以 运行 类似下面的内容从任何 kubectl
配置为连接到您的集群的机器复制数据:
kubectl cp dataaccess:/data data/
- 在 EC2 实例中安装 PV 的 EBS 卷并从那里复制数据。这个案例不太容易详细解释,因为它需要更多关于您要实现的目标的上下文。
我在通过 helm 创建的 K8s 集群中有一个测试执行器 Pod
,它要求动态创建 PersistentVolume
用于存储测试结果。
现在我想获取本卷的内容。这似乎是很自然的事情。
我希望有一些 kubectl download pv <id>
。但是我什么都不能google。
如何获取PersistentVolume
的内容?
我在 AWS EKS;所以 AWS API 也是一个选项。我也可以访问 ECR,所以也许我可以以某种方式将它存储为图像并下载?
或者,一般来说,我正在寻找一种传输目录的方法,甚至可以在存档中。但它应该是 在 容器完成并且不再 运行 之后。
我可以考虑两种方案来满足您的需求:
- 创建一个附加了 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
应该是绑定到要从中复制数据的 PV 的 PersistentVolumeClaim
的名称。
一旦 pod 运行ning,您可以 运行 类似下面的内容从任何 kubectl
配置为连接到您的集群的机器复制数据:
kubectl cp dataaccess:/data data/
- 在 EC2 实例中安装 PV 的 EBS 卷并从那里复制数据。这个案例不太容易详细解释,因为它需要更多关于您要实现的目标的上下文。