Kubernetes kubectl复制命令失败。

7
我有一个以Python镜像为基础的Pod,用户为199。我的代码app.py位于/tmp/目录中。现在,当我运行复制命令以替换正在运行的app.py时,该命令会因文件已存在而失败。

enter image description here


确保用户199在容器中具有/tmp目录的写入权限。 - Vasili Angapov
我使用/tmp目录的原因是,每个人都可以访问。此外,我尝试更改目录的所有权为199。 - prashant
1个回答

3
请尝试在使用kubectl cp命令时添加--no-preserve=true标志。它将在容器中提取复制的文件时向tar实用程序传递--no-same-owner--no-same-permissions标志,从而使内容更加通俗易懂。GNU tar手册建议使用--skip-old-files--overwrite标志来对tar --extract命令进行操作,以避免您遇到的错误消息,但据我所知,没有办法在kubectl cp中添加这个可选参数。

[a_ansible@master1 out]$ kubectl cp app.py 103000-pras-dev/simplehttp-777fd86759-w79pn:/tmp/ --no-preserve=true错误:未知标志:--no-preserve - prashant
请升级 'kubectl' 客户端到更新的版本。此标志首次引入于 v1.13.0-alpha.1 版本中。 - Nepomucen
[a_ansible@master1 out]$ kubectl cp app.py 103000-pras-dev/simplehttp-777fd86759-w79pn:/tmp/ no-preserve=truetar:app.py:无法打开:文件已存在 tar:由于先前的错误而以失败状态退出 命令以退出代码2终止 - prashant
好的,似乎您要复制文件到的容器上工具集非常有限。我在公共工具箱容器上覆盖现有文件没有问题。顺便问一下,您在 Pod 规范中使用的确切容器是什么? 您可以尝试使用移动命令解决: “kubectl cp LICENSE default/toolbox:/tmp/LICENSE2” 和 “kubectl exec toolbox -- mv -f /tmp/LICENSE2 /tmp/LICENSE” - Nepomucen
2
@Nepomucen 我也遇到同样的问题。我已经使用了--no-preserve选项,但问题仍然存在。请问您能否建议我们尝试其他选项或如何进一步进行故障排除? - Jaydeep Soni
@prashant,你有没有找到解决方案? - Saif Haider

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接