Копирование файлов в/из контейнера Windows на кластере k8s

Я пытаюсь скопировать файлы в/из контейнера Windows в модуле, работающем в кластере ACS k8s.

Я использую эту команду kubectl на своем ноутбуке с Windows 10:

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

И я получаю эту ошибку в ответ:

ошибка: архив/tar: неверный заголовок tar

Я пробовал это на кластерах с v1.7.7 и v1.7.9 k8s, а также на Server 2016 ltsc и Server v1709. Мой kubectl.exe версии 1.8.5. У меня есть несколько ценных файлов отладки, застрявших в моем контейнере, есть идеи, как я могу заставить это работать?


person BrettRobi    schedule 12.12.2017    source источник


Ответы (2)


Вот и получается, что команда kubectl cp требует, чтобы tar находился в контейнере, а не в локальной системе, как я ожидал. И поскольку Windows не поставляется с tar.exe, проблема заключается в нем.

Я развернул новый модуль, который включал версию tar.exe для Windows и его зависимости. Это дало мне дальнейшее развитие в контейнере Server 2016 ltsc. Мне просто пришлось немного изменить синтаксис, и ниже сработало:

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

Однако этот же процесс НЕ работает в контейнере Server v1709. Когда я пробую точно такой же процесс, я получаю эту ошибку:

tar: Не удается открыть -: Отказано в доступе

tar: ошибка неустранима: выход сейчас

Явно ошибка разрешений, но я понятия не имею, какие разрешения являются проблемой и как их изменить. Любые идеи?

person BrettRobi    schedule 13.12.2017

Возвращаясь к этому вопросу. Теперь, когда контейнеры Windows v1803 работают в kubernetes, я проверил эту же проблему, и все работает правильно. Версия 1803 Windows начала поставляться с tar.exe как частью операционной системы. Ура Майкрософт!

Одна странность заключается в том, что при копировании ИЗ модуля В вашу локальную систему местом назначения всегда является папка. Он распаковывает любые файлы из источника в эту папку, но если вы укажете один файл, он все равно создаст папку с таким именем. Ничего страшного, просто странно.

Поэтому для меня ответ на этот вопрос таков: Используйте образы контейнеров v1803. Да, это может быть не то, что вы хотите услышать, но реальность такова, что поддержка контейнеров Windows все еще находится в зачаточном состоянии, а поддержка kubernetes очень сильно зарождается с версии v1803. v1809 может быть там, где он, наконец, станет прочным и надежным.

person BrettRobi    schedule 01.10.2018