I am trying to copy files from the pod to local using following command:
kubectl cp /namespace/pod_name:/path/in/pod /path/in/local
But the command terminates with exit code 126
and copy doesn't take place.
Similarly while trying from local to pod using following command:
kubectl cp /path/in/local /namespace/pod_name:/path/in/pod
It throws the following error:
OCI runtime exec failed: exec failed: container_linux.go:367: starting container process caused: exec: "tar": executable file not found in $PATH: unknown
Please help through this.
Useful command to copy the file from pod to local
kubectl exec -n <namespace> <pod> -- cat <filename with path> > <filename>
kubectl cp
is actually a very small wrapper around kubectl exec whatever tar c | tar x
. A side effect of this is that you need a working tar
executable in the target container, which you do not appear to have.
In general kubectl cp
is best avoided, it's usually only good for weird debugging stuff.
kubectl cp
requires the tar
to be present in your container, as the help says:
!!!Important Note!!! Requires that the 'tar' binary is present in your container image. If 'tar' is not present, 'kubectl cp' will fail.
Make sure your container contains the tar
binary in its $PATH
An alternative way to copy a file from local filesystem into a container:
cat [local file path] | kubectl exec -i -n [namespace] [pod] -c [container] "--" sh -c "cat > [remote file path]"