【问题标题】:Kubernetes - how to download a PersistentVolume's contentKubernetes - 如何下载 PersistentVolume 的内容
【发布时间】:2021-08-25 15:34:04
【问题描述】:

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

现在我想获取这本书的内容。这似乎是很自然的事情。 我期待一些kubectl download pv <id>。但我无法搜索任何内容。

如何获取PersistentVolume 的内容?

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

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

【问题讨论】:

    标签: kubernetes persistent-volumes file-moving


    【解决方案1】:

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

    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 应该是绑定到要从中复制数据的 PV 的 PersistentVolumeClaim 的名称。

    Pod 运行后,您可以运行以下类似的操作,从任何配置了 kubectl 以连接到您的集群的机器复制数据:

    kubectl cp dataaccess:/data data/
    
    1. 在 EC2 实例中挂载 PV 的 EBS 卷并从那里复制数据。这种情况不太容易详细解释,因为它需要更多关于您要实现的目标的背景信息。

    【讨论】:

    • 您能详细说明一下吗? 1) kubectl cp 只能在集群内工作,对吧?我需要把它放在集群之外。 2)我可以随意安装这些吗?这将是自动化的。安装到某些 EC2 可以工作,但上传到 S3 更容易。我的意思是通过kubectl 直接下载内容。当人们决定离开云端时,他们如何迁移他们的内容?
    • 不,kubectl cp 在 kubectl 运行的任何时候都可以使用,因此您可以根据需要使用它将数据从集群复制到本地工作站。
    • 根据另一个问题,不确定您可以使用 AWS EBS 做什么,但我很确定您可以以某种方式将您的内容复制到 S3。
    • 添加了我的第一个提案的示例。
    • 请注意用于使 pod 保持活动状态的命令:如果您希望 pod 无限期地存活直到显式删除,您也可以使用 tail -f /dev/null(代替 sleep 999999)。跨度>
    猜你喜欢
    • 1970-01-01
    • 2019-11-11
    • 2016-04-23
    • 1970-01-01
    • 1970-01-01
    • 2021-11-07
    • 1970-01-01
    • 2019-12-18
    • 2011-02-06
    相关资源
    最近更新 更多