假设我有my-namespace -〉my-pod -〉my-container,并且我有一个位于my-container的文件:/opt/tomcat/logs/catalina.2017-05-02.log。我应用了以下命令来复制不工作的文件,
kubectl cp my-namepace/my-pod:/opt/tomcat/logs/catalina.2017-05-02.log -c my-container .
注意:我的容器上有tar二进制文件
错误:
tar: Removing leading `/' from member names
error: open .: is a directory
9条答案
按热度按时间fdbelqdn1#
您要求
kubectl
做的是将catalina.2017-05-02.log文件复制到当前上下文,但当前上下文是一个目录。错误说明您不能将文件复制为具有目录名。尝试为文件的复制版本命名:
kubectl cp my-namepace/my-pod:/opt/tomcat/logs/catalina.2017-05-02.log -c my-container ./catalina.2017-05-02.log
.dphi5xsq2#
这对我很有效:
vatpfxk53#
源文件名和目标文件名应相同,以下命令对我有效:
93ze6v8z4#
我注意到,当您尝试指定名称空间时(既作为pod标识符的前缀,也使用
-n
选项),它会失败。50pmv0ei5#
下面的命令
kubectl cp NameSpace/POD_NAME:/DIR/FILE_NAME /tmp/
对我很有效。b1zrtrql6#
我发现这种用法对我来说最方便
和其他方向
xxls0lw87#
目标也应该是文件名。因此,命令应该是
“cat”命令适用于ascii文件。对于其他文件,可能会有限制,复制的文件可能会损坏。
2mbi3lxu8#
指定容器文件时,删除“:“后的“/”。
所以这
会变成这样:
unguejic9#
我尝试了上面给出的所有选项,它解决了错误,但警告仍然出现。
顺便说一句,复制的文件还可以,只是警告有点混乱。
如果使用绝对路径
kubectl cp namespace/pod:/somepath/somfile somepath/somefile
将打印相同的警告因此,如果文件在容器的工作目录中,则删除absulte路径,警告将消失。
I moved the wanted file to the working dir in the pod