Как скопировать файлы из стручков kubernetes в локальную систему - PullRequest
0 голосов
/ 19 сентября 2018

Я пытаюсь скопировать файлы из Kubernetes Pods в мою локальную систему.Я получаю приведенную ниже ошибку при выполнении следующей команды:

kubectl cp aks-ssh2-6cd4948f6f-fp9tl:/home/azureuser/test.cap ./test.cap

Вывод:

tar: home / azureuser / test: Невозможно указать: Нет такого файла или каталога tar: Выходс состоянием ошибки из-за предыдущих ошибок: home / azureuser / test нет такого файла или каталога

Я мог видеть файл по указанному выше пути.Я действительно в замешательстве.

Не могли бы вы мне помочь?

Ответы [ 5 ]

0 голосов
/ 08 августа 2019

kubectl cp не будет работать, если в вашем контейнере нет команды tar в PATH.Из вашей ошибки видно, что команда tar недоступна в вашем контейнере.https://github.com/kubernetes/kubernetes/issues/58512 Пожалуйста, изучите другие варианты

0 голосов
/ 20 декабря 2018

Я решаю эту проблему, устанавливая исходную папку как относительный путь.Если местоположение файла - /home/azureuser/test.cap, а рабочий каталог - / home / azureuser /, cmd -

kubectl cp aks-ssh2-6cd4948f6f-fp9tl: test.cap ./test.крышка

0 голосов
/ 19 сентября 2018

Вы можете смонтировать локальный каталог в модуль.

Обновите свой файл aks-ssh yaml:

spec:
  ...
  containers:
    ...
    volumeMounts:
    - name: test-dir
      mountPath: /home/azureuser
    ...
  volumes:
  - name: test-dir
    hostPath:
      path: /path/to/your/local/dir

Теперь вы можете получить доступ к своим файлам в локальном каталоге.

0 голосов
/ 16 октября 2018

Допустим, вы копируете файл из папки bin в локальную систему.Команда:

kubectl cp default/POD_NAME:bin/FILE_NAME /Users/username/FILE_NAME

Вы можете подключиться к POD, чтобы проверить, правильно ли вы указали имя файла

kubectl exec -ti POD_NAME bash
0 голосов
/ 19 сентября 2018

Как указано в kubectl help:

kubectl cp --help
Copy files and directories to and from containers.
Examples:
# !!!Important Note!!!
# Requires that the 'tar' binary is present in your container
# image.  If 'tar' is not present, 'kubectl cp' will fail.

# Copy /tmp/foo_dir local directory to /tmp/bar_dir in a remote pod in the default namespace
kubectl cp /tmp/foo_dir <some-pod>:/tmp/bar_dir

# Copy /tmp/foo local file to /tmp/bar in a remote pod in a specific container
kubectl cp /tmp/foo <some-pod>:/tmp/bar -c <specific-container>

# Copy /tmp/foo local file to /tmp/bar in a remote pod in namespace <some-namespace>
kubectl cp /tmp/foo <some-namespace>/<some-pod>:/tmp/bar

# Copy /tmp/foo from a remote pod to /tmp/bar locally
kubectl cp <some-namespace>/<some-pod>:/tmp/foo /tmp/bar

Options:
-c, --container='': Container name. If omitted, the first container in the pod will be chosen

Usage:
kubectl cp <file-spec-src> <file-spec-dest> [options]

Use "kubectl options" for a list of global command-line options (applies to all commands).

Вы также можете войти в свой Containter и проверить, есть ли файл:

kubectl exec -it aks-ssh2-6cd4948f6f-fp9tl /bin/bash
ls -la /home/azureuser/test.cap

Если это все еще не 't работает, попробуйте:

Вы можете попытаться скопировать свои файлы в workdir и затем попытаться скопировать их, используя только их имена.Это странно, но пока работает.

Примите во внимание совет кчугалинский здесь # 58692 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...