我正在尝试将本地 Python 文件复制到 Kubernetes 上正在运行的容器,但失败了:
$ kubectl cp /path/to/file.py namespace/pod:/path/in/container/file.py
tar: This does not look like a tar archive
tar: Exiting with failure status due to previous errors
command terminated with exit code 2
Run Code Online (Sandbox Code Playgroud)
我知道tar二进制文件必须在容器中可用,而且确实如此。
有谁知道这里发生了什么以及我如何解决这个问题?
更新:
经过更多测试后,我可以确认这仅发生在运行的节点上,nvidia-docker而不是正常的docker. 当管道进入kubectl exec这些节点时,流总是空的。
因此,以下命令会在支持 GPU 的节点上运行的 pod 中生成一个空文件,而该文件在其他不支持 GPU 的节点上为非空文件:
cat nonempty_file.txt | kubectl exec -i pod -- tee /home/jovyan/empty_file.txt
Run Code Online (Sandbox Code Playgroud)
这已经在两个节点上使用完全相同的图像/容器进行了测试。