首页 > 解决方案 > 如何从 Windows kubernetes pod 容器中复制文件

问题描述

我在将文件从 kubernetes pod 容器(windows节点)复制到 windows 10 上的本地 linux 子系统时遇到了一些困难:

t@11DT:/mnt/c/dev/auto$ kubectl cp a8677:c:\testlog2.txt .
tar: Removing leading drive letter from member names
error: tar contents corrupted
t@11DT:/mnt/c/dev/auto$ kubectl cp a8677:/c/testlog2.txt ./
tar: /c/testlog2.txt: Couldn't find file: No such file or directory
tar: Error exit delayed from previous errors.
t@11DT:/mnt/c/dev/auto$ kubectl cp a8677:c:\testlog2.txt ./
tar: Removing leading drive letter from member names
error: tar contents corrupted
t@11DT:/mnt/c/dev/auto$ kubectl cp a8677:c:/testlog2.txt ./
tar: Removing leading drive letter from member names
error: tar contents corrupted
t@11DT:/mnt/c/dev/auto$ kubectl cp a8677:c:/testlog2.txt ./t2.txt
tar: Removing leading drive letter from member names
error: tar contents corrupted
t@11DT:/mnt/c/dev/auto$ kubectl cp a8677:c:\testlog2.txt ./t2.txt
tar: Removing leading drive letter from member names
error: tar contents corrupted

该文件c:\testlog2.txt肯定存在于 pod a8677 中。但是如何正确应对c:\testlog2.txt呢?


笔记:

一些版主建议关闭这个问题,因为它是How to copy files from kubernetes Pods to local system 的副本。现有的问题是关于如何在 kubernetes 集群中的 linux 节点和 linux 本地系统之间复制文件。此信息包含在 Kubernetes 文档 ( https://kubectl.docs.kubernetes.io/pages/container_debugging/copying_container_files.html ) 中。

这里的这个问题专门针对Windows容器。它似乎既不在 kubernetes 文档中,也不在我在 stackoverflow 上找到的任何其他问题中。许多在 kubernetes linux 节点中很简单的事情都需要对 windows 节点进行一些额外的研究。

因此,我不认为它是重复的。

标签: windowskubernetes

解决方案


正确的方法是,省略驱动器号:

kubectl cp <pod_name>:filename

例如:

kubectl cp a8677:testlog2.txt ./t2.txt

如果文件位于子目录中,则路径需要包含斜杠,并且不能包含反斜杠:

kubectl cp a8677:my/file/path/file.txt ./myfile.txt

推荐阅读