Disons que j’ai, my-namespace -> my-pod -> my-container et que j’ai un fichier situé dans my-container: /opt/Tomcat/logs/catalina.2017-05-02.log. J'ai appliqué la commande ci-dessous pour copier le fichier qui ne fonctionne pas,
kubectl cp my-namepace/my-pod:/opt/Tomcat/logs/catalina.2017-05-02.log -c my-container .
Note: J'ai le binaire tar sur mon conteneur
Erreur:
tar: Removing leading `/' from member names
error: open .: is a directory
cela fonctionne pour moi:
$(kubectl exec <pod-name> [-c <container-name>] -it -- cat <file-path>) > <local-file>
Ce que vous demandez à kubectl
de faire est de copier le fichier catalina.2017-05-02.log dans le contexte actuel, mais le contexte actuel est un répertoire. L'erreur indique que vous ne pouvez pas copier un fichier pour avoir le nom d'un répertoire.
Essayez de donner un nom à la version copiée du fichier:
kubectl cp my-namepace/my-pod:/opt/Tomcat/logs/catalina.2017-05-02.log -c my-container ./catalina.2017-05-02.log
.
J'ai remarqué que cela échouait lorsque vous tentiez de spécifier l'espace de nom (à la fois comme préfixe de l'identifiant du pod et en utilisant l'option -n
). L'utilisation de l'identifiant du pod seul fonctionne pour moi:
kubectl cp postgres-1111111111-11abc:/tmp/dump.csv dump
Commande suivante kubectl cp NameSpace/POD_NAME:/DIR/FILE_NAME /tmp/
travaille pour moi.
J'ai trouvé cet usage le plus pratique pour moi
kubectl cp /tmp/file <your_namespace>/<your_pod>:/tmp/newfile
et autre direction
kubectl cp <your_namespace>/<your_pod>:/tmp/file /tmp/newfile
Supprimez "/" après ":" lors de la spécification du fichier conteneur.
Donc ça
kubectl cp my-namepace/my-pod:/opt/Tomcat/logs/catalina.2017-05-02.log -c my-container .
va se transformer en ceci:
kubectl cp my-namepace/my-pod:opt/Tomcat/logs/catalina.2017-05-02.log -c my-container .
Je veux juste confirmer que la commande - kubectl cp - ne fonctionne pas comme documenté. J'utilise à la fois les options namespace et container.