使用kubectl实现Kubernetes容器与本地的文件双向复制

    有时候需要想把本地计算机上的文件复制到远程k8s中正在运行的容器里或实现逆向文件复制,可以通过kubectl的cp命令完成这个需求。

    此命令需要双方的系统环境里已安装tar工具。

    比如说:

    I) 把本地计算机当前目录下的lalalaA文件复制到指定k8s命名空间中某个pod里的当前目录下temp子目录,并将复制后的文件命名为lalalaB。

       kubectl cp ./lalalaA <some-namespace>/<some-pod>:./temp/lalalaB

       或者:

       kubectl cp ./lalalaA <some-namespace>/<some-pod>:/<root_dir>/<parent_dir>/temp/lalalaB

    II) 把远程k8s容器中某个文件复制到本地计算机,并将复制后的文件命名为lalalaC。

        注意此时k8s中的文件路径必须是绝对路径而且<some_pod>后面的冒号不能紧跟着'/'符号,否则kubectl报"tar: removing leading '/' from member names" warning,虽然目前这个warning并不意味着文件复制失败......

        另外如果此时k8s中的文件路径是相对路径,那么kubectl报"tar contents corrupted" error,文件复制失败。

       kubectl cp <some-namespace>/<some-pod>:<root_dir>/<parent_dir>/temp/lalalaB ./lalalaC

     

    参考及其它兼容的kubectl cp语法(参考最高赞答案):https://stackoverflow.com/questions/52407277/how-to-copy-files-from-kubernetes-pods-to-local-system

    kubectl从远程pod复制文件时语法细节的讨论(见@isaiah1112的回答,同时也是最高赞答案): https://github.com/kubernetes/kubernetes/issues/58692

posted @ 2020-02-29 18:57  r0xFED  阅读(6984)  评论(1编辑  收藏  举报