Мне нужно скопировать файл из модуля на хост с помощью клиента kubernetes python. Это будет что-то вроде kubectl cp pod:file file
.
Я тестирую код от: https://github.com/prafull01/Kubernetes-Utilities/blob/master/kubectl_cp_as_python_client.py.
В частности, этот код:
command_copy = ['tar', 'cf', '-', source_path]
with TemporaryFile() as tar_buffer:
exec_stream = stream(self.coreClient.connect_get_namespaced_pod_exec, pod_name, name_space,
command=command_copy, stderr=True, stdin=True, stdout=True, tty=False,
_preload_content=False)
# Copy file to stream
try:
while exec_stream.is_open():
exec_stream.update(timeout=1)
if exec_stream.peek_stdout():
out = exec_stream.read_stdout()
tar_buffer.write(out.encode('utf-8'))
if exec_stream.peek_stderr():
logger.debug("STDERR: %s" % exec_stream.read_stderr())
exec_stream.close()
tar_buffer.flush()
tar_buffer.seek(0)
with tarfile.open(fileobj=tar_buffer, mode='r:') as tar:
member = tar.getmember(source_path)
tar.makefile(member, destination_path)
return True
except Exception as e:
raise manage_kubernetes_exception(e)
Я использую официальную стабильную библиотеку Kubernetes Python версии 10.0.1 со Python 3.6.8
Но она не работает должным образом:
- Работает когда я копирую небольшие текстовые файлы
- , но это не работает для других файлов, таких как tar или zip. Он копирует поврежденный файл того же размера, что и оригинал.
Есть ли ошибка в коде? У вас есть какой-нибудь другой способ сделать это с помощью клиента kubernetes python?
Всего наилучшего.
Спасибо.