web-dev-qa-db-fra.com

Comment copier des fichiers de pods kubernetes sur un système local

J'essaie de copier des fichiers de Kubernetes Pods sur mon système local. Je reçois l'erreur ci-dessous lors de l'exécution de la commande suivante: 

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

Sortie:

tar: home/azureuser/test: Cannot stat: Aucun fichier ou répertoire de ce type tar: Sortie avec un statut d'échec en raison d'erreurs précédentes error: home/azureuser/test aucun fichier ou répertoire de ce type

Je pouvais voir le fichier sous le chemin donné ci-dessus. Je suis vraiment confus.

Pourriez-vous s'il vous plaît m'aider?

3
Girish

Vous pouvez monter un répertoire local dans le pod.

Mettez à jour votre fichier aks-ssh yaml:

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

Vous pouvez maintenant accéder à vos fichiers dans le répertoire local.

2
rw026

Comme indiqué dans 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).

Vous pouvez également vous connecter à votre Containter et vérifier si le fichier est là:

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

Si cela ne fonctionne toujours pas, essayez:

Vous pouvez essayer de copier vos fichiers dans workdir, puis réessayer de les copier en utilisant simplement leur nom. C'est bizarre, mais ça marche pour l'instant.

Tenir compte de l’avis de kchugalinskiy ici # 58692 .

1
Crou

Je résous ce problème en définissant le dossier source sur un chemin relatif. Si l'emplacement du fichier est /home/azureuser/test.cap et que le répertoire de travail est/home/azureuser /, le cmd est 

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

0
Yujie Gu

Supposons que vous copiez un fichier d'un dossier bin vers un système local. La commande est

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

Vous pouvez vous connecter au POD pour vérifier si vous spécifiez le nom de fichier correct.

kubectl exec -ti POD_NAME bash
0
Atul Verma