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?
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.
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 .
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
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