Kubernetes Podsからローカルシステムにファイルをコピーしようとしています。次のコマンドの実行中に次のエラーが表示されます。
kubectl cp aks-ssh2-6cd4948f6f-fp9tl:/home/azureuser/test.cap ./test.cap
出力:
tar:home/azureuser/test:statできません:そのようなファイルまたはディレクトリはありませんtar:以前のエラーによる失敗ステータスで終了しますerror:home/azureuser/test no such file or directory
上記のパスの下にファイルが表示されました。私は本当に混乱しています。
手伝ってくれませんか?
kubectl
ヘルプに記載されているとおり:
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
それでも解決しない場合は、次を試してください:
ファイルをworkdirにコピーしてから、名前だけを使用してファイルのコピーを再試行することができます。奇妙ですが、今のところは機能します。
kchugalinskiy here #58692 のアドバイスを検討してください。
ローカルディレクトリをポッドにマウントできます。
Aks-ssh yamlファイルを更新します。
spec:
...
containers:
...
volumeMounts:
- name: test-dir
mountPath: /home/azureuser
...
volumes:
- name: test-dir
hostPath:
path: /path/to/your/local/dir
これで、ローカルディレクトリのファイルにアクセスできます。
Binフォルダーからローカルシステムにファイルをコピーしているとします。コマンドは
kubectl cp default/POD_NAME:bin/FILE_NAME /Users/username/FILE_NAME
PODに接続して、正しいファイル名を指定しているかどうかを確認できます
kubectl exec -ti POD_NAME bash
コンテナのPATHにtarコマンドがない場合、kubectl cpは機能しません。エラーから、tarコマンドがコンテナで使用できないように見えます。 https://github.com/kubernetes/kubernetes/issues/58512 他のオプションを調べてください
この問題を解決するには、ソースフォルダーを相対パスに設定します。ファイルの場所が/home/azureuser/test.capで、作業ディレクトリが/ home/azureuser /の場合、cmdは
kubectl cp aks-ssh2-6cd4948f6f-fp9tl:test.cap ./test.cap