如何从特定命名空间中的容器中的容器中复制文件?

zil*_*ani 22 kubernetes

假设我有,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 .
Run Code Online (Sandbox Code Playgroud)

注意:我的容器上有tar二进制文件

错误:

tar: Removing leading `/' from member names
error: open .: is a directory
Run Code Online (Sandbox Code Playgroud)

Sim*_*n I 35

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.


Gre*_*ore 18

这对我有用:

$(kubectl exec <pod-name> [-c <container-name>] -it -- cat <file-path>) > <local-file>
Run Code Online (Sandbox Code Playgroud)

  • 做`cat`可能是有损的,如果它的二进制文件可能会被破坏,`cp`是一个更好的选择 (2认同)
  • `cat` 只会 cat ascii 内容,不适用于二进制 (2认同)

小智 7

源文件名和目标文件名应该相同,以下命令对我有用:

kubectl cp namespace/pod-name:abc.log  .\Desktop\abc.log
Run Code Online (Sandbox Code Playgroud)


Whi*_*cal 5

我注意到当您尝试指定命名空间(作为 pod 标识符的前缀和使用-n选项)时它失败了,单独使用 pod 标识符对我有用:

kubectl cp postgres-1111111111-11abc:/tmp/dump.csv dump
Run Code Online (Sandbox Code Playgroud)