假设我有,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
这对我有用:
$(kubectl exec <pod-name> [-c <container-name>] -it -- cat <file-path>) > <local-file>
您要求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
。
我注意到当你尝试指定命名空间时失败(作为pod标识符的前缀和使用-n
选项)单独使用pod标识符对我有用:
kubectl cp postgres-1111111111-11abc:/tmp/dump.csv dump
以下命令kubectl cp NameSpace/POD_NAME:/DIR/FILE_NAME /tmp/
为我工作。
我觉得这个用法对我来说最方便
kubectl cp /tmp/file <your_namespace>/<your_pod>:/tmp/newfile
和其他方向
kubectl cp <your_namespace>/<your_pod>:/tmp/file /tmp/newfile
我只是想确认-kubectl cp - 命令不能像记录的那样工作。我同时使用命名空间和容器选项。
指定容器文件时,在“:”之后删除“/”。
所以这
kubectl cp my-namepace/my-pod:/opt/tomcat/logs/catalina.2017-05-02.log -c my-container .
将变成这样:
kubectl cp my-namepace/my-pod:opt/tomcat/logs/catalina.2017-05-02.log -c my-container .