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

时间:2017-05-02 07:23:58

标签: kubernetes

说我有,my-namespace - > my-pod - >我的容器 我有一个位于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

10 个答案:

答案 0 :(得分:32)

您要求$args = array( 'showposts' => 20, 'cat' => array (1,2,7,8,9), 'meta_key' => 'datumsfeld', 'orderby' => 'meta_value', 'compare' => '>=', 'tax_query' => array( array( 'taxonomy' => 'post_format', 'field' => 'slug', 'terms' => 'post-format-aside', ) ), 'meta_query' => array( array( 'key' => 'datumsfeld', 'value' => '...' /* something like today */, 'compare' => '>=', ), ), ); 做的是将文件catalina.2017-05-02.log复制到当前上下文,但当前上下文是一个目录。该错误表明您无法复制文件以具有目录名称。

尝试为该文件的复制版本命名:

kubectl

答案 1 :(得分:17)

这对我有用:

$(kubectl exec <pod-name> [-c <container-name>] -it -- cat <file-path>) > <local-file>

答案 2 :(得分:3)

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

kubectl cp postgres-1111111111-11abc:/tmp/dump.csv dump

答案 3 :(得分:2)

以下命令kubectl cp NameSpace/POD_NAME:/DIR/FILE_NAME /tmp/对我有用。

答案 4 :(得分:1)

我发现这种用法对我来说最方便

kubectl cp /tmp/file <your_namespace>/<your_pod>:/tmp/newfile

和其他方向

kubectl cp <your_namespace>/<your_pod>:/tmp/file /tmp/newfile

答案 5 :(得分:1)

目的地也应该是文件名。因此,命令应为

kubectl cp my-namepace/my-pod:/opt/tomcat/logs/catalina.2017-05-02.log -c my-container ./catalina.2017-05-02.log

“ cat”命令对于ascii文件效果很好。其他文件会有限制,并且复制的文件可能已损坏。

答案 6 :(得分:1)

源文件和目标文件名应该相同,以下命令对我有用: kubectl cp名称空间/pod-name:abc.log。\ Desktop \ abc.log

答案 7 :(得分:0)

我只想确认-kubectl cp-命令不能如所记载的那样工作。我同时使用了命名空间和容器选项。

答案 8 :(得分:0)

在指定容器文件时,删除“:”之后的“ /”。

所以这个

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 .

答案 9 :(得分:0)

我尝试了上面所有给定的选项,它解决了错误,但警告仍然出现。

tar: Removing leading `/' from member names

顺便说一句,复制的文件还可以,只是警告有点混乱。

如果您使用绝对路径 kubectl cp namespace/pod:/somepath/somfile somepath/somefile 将打印相同的警告

所以如果文件在容器的工作目录中,删除绝对路径,警告就会消失。

k cp "default/name-redis-6d66b898d6-8xdkb:dump.rdb" ./dump.rdb

enter image description here

<块引用>

I moved the wanted file to the working dir in the pod