无法使用kubectl cp命令将数据从POD复制到本地

6tqwzwtp  于 2022-11-02  发布在  Kubernetes
关注(0)|答案(6)|浏览(264)

我需要将转储数据从pod复制到本地。下面的命令我正在尝试,但我得到错误:unexpected EOF

kubectl cp device-database-79fc964c8-q7ncc:tmp /Users/raja
error: unexpected EOF

or

kubectl cp device-database-79fc964c8-q7ncc:tmp/plsql_data/prod.dump /Users/raja/prod.dump
error: unexpected EOF

库贝特尔版本

kubectl version --client
Client Version: version.Info{Major:"1", Minor:"21", GitVersion:"v1.21.0", GitCommit:"cb303e613a121a29364f75cc67d3d580833a7479", GitTreeState:"clean", BuildDate:"2021-04-08T16:31:21Z", GoVersion:"go1.16.1", Compiler:"gc", Platform:"darwin/amd64"}

有人能帮助解决此问题吗?
谢谢

zujrkrfu

zujrkrfu1#

对于较新版本的kubectl,添加一个retries=-1标志可能会解决此问题:

kubectl cp --retries=-1 pod-www-xxx-yyy-zzz:/path/to/remote/dir ~/local/dir
tyg4sfes

tyg4sfes2#

使用“cat”命令,而不是“cp”对我有效--但只有在3次尝试之后。
“cp”命令反复执行以获取整个文件。
这种“猫”式命令每次都做得更好。
所以试试这个,看看你的几率是否会提高!

kubectl exec -i [pod name] -c [container name] -- cat [path to file] > [output file]
gkl3eglg

gkl3eglg3#

您是否可以将数据库转储移动到一个单独的目录,然后尝试复制整个目录
可能如下所示:

kubectl cp device-database-79fc964c8-q7ncc:tmp/plsql_data/directory_containing_prod_dump /Users/raja/new_local_dir_containing_db_dump

根据这篇评论,它可能会有帮助。
Bageshwar Pratap Narainİbrahim ULUDAĞ的评论中也证实了该解决方案对他们有效。

nwlqm0z1

nwlqm0z14#

在我的例子中,复制文件夹没有帮助,相反tar.gz有帮助

xfb7svmp

xfb7svmp5#

根据kubectl文档,文件和目录的扩展名应为.tar,kubectl cp才能正常工作,否则将失败。

kubectl cp --help

Copy files and directories to and from containers.

Examples:
  # !!!Important Note!!!
  # Requires that the 'tar' binary is present in your container
  # image.  If 'tar' is not present, 'kubectl cp' will fail.
  #
  # For advanced use cases, such as symlinks, wildcard expansion or
  # file mode preservation consider using 'kubectl exec'.
sczxawaw

sczxawaw6#

我今天在做了一些研究后遇到了类似的问题,发现在下载完整的文件之前连接正在超时,建议您使用

--retries=10

完整的命令将是

kubectl  cp --retries=10 <Name of namespace>/<pod-name>:<Path of file in pod> <Path of file in local>

例如:

kubectl  cp --retries=10 cf/abc-service-58bf-xj8wr:/tmp/app.hprof /tmp/test_heap.hprof

相关问题