Why does kubectl cp command terminates with exit code 126?

4/14/2021

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.

-- kkpareek
devops
file-copying
kubectl
kubernetes

4 Answers

2/24/2022

Useful command to copy the file from pod to local

kubectl exec -n <namespace> <pod> -- cat <filename with path>  > <filename>
-- Dinesh Verma
Source: StackOverflow

4/14/2021

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.

-- coderanger
Source: StackOverflow

4/14/2021

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

-- chresse
Source: StackOverflow

10/10/2021

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]"
-- Yoni Sade
Source: StackOverflow