将文件复制到k8s群集上的Windows容器中

时间:2017-12-12 22:46:31

标签: kubernetes azure-container-service

我正在尝试将文件复制到ACS k8s群集上运行的pod中的Windows容器中。

我在Windows 10笔记本电脑上使用这个kubectl命令:

kubectl cp dev-acs-conn-testdn-1981314364-rjc0l:\app\nettrace.etl c:\

我在回复时收到此错误:

  

错误:存档/ tar:无效的tar标头

我从运行k8s的v1.7.7和v1.7.9以及Server 2016 ltsc和Server v1709的群集中尝试过此操作。我的kubectl.exe是v1.8.5。我有一些有价值的调试文件滞留在我的容器上,任何想法我怎么能让它工作?

2 个答案:

答案 0 :(得分:1)

事实证明," kubectl cp"命令要求tar在容器中,而不是像我预期的那样在本地系统上。由于Windows并没有附带tar.exe,因此存在问题。

我部署了一个新的pod,其中包含Windows版本的tar.exe及其依赖项。这让我在Server 2016 ltsc容​​器中得到了进一步的发展。我只需稍微调整一下我的语法,然后就可以了:

kubectl cp dev-acs-conn-testdn-1981314364-rjc0l:/app/nettrace.etl nettrace.etl

但是,此相同的过程不适用于Server v1709容器。当我尝试完全相同的过程时,我得到了这个错误:

  

tar:无法打开 - :权限被拒绝

     

tar:错误无法恢复:现在退出

显然是权限错误,但我不知道该问题是什么权限以及如何更改它们。有什么想法吗?

答案 1 :(得分:0)

回避此问题。现在Windows v1803容器在kubernetes中可以正常工作了,我已经测试了相同的问题,并且一切都正常工作。 Windows v1803开始作为操作系统的一部分与tar.exe一起提供。是的,对微软来说!

一个奇怪的地方是,从吊舱复制到本地系统时,目的地始终是文件夹。它将所有文件从源解压缩到该文件夹​​,但是,如果您指定一个文件,它仍会创建该名称的文件夹。没什么大不了的,只是奇怪。

对我来说,这个问题的答案是:使用v1803容器映像。是的,这可能不是您想听到的,但现实是Windows容器支持仍处于新生阶段,而从v1803开始,kubernetes支持非常新生。 v1809可能最终成为稳定可靠的地方。

相关问题