Kubernetes

[k8s] kubectl cp - 클라이언트/포드 간 파일 복사

비번변경 2024. 1. 1. 14:19

개요

쿠버네티스를 사용하다 보면 클라이언트에서 포드 내 디렉터리로 파일을 전달하거나, 포드에 저장된 파일을 클라이언트로 가져오고 싶을 때가 있다. 이런 경우, kubectl cp 명령어를 사용할 수 있다.

 

사용법을 적어둔다.

 

 

kubectl cp

kubectl cp 명령어는 컨테이너 간 파일 및 디렉터리를 복사한다. 명령어가 동작하기 위해서는 포드 컨테이너에서 tar를 실행할 수 있어야 한다.  만약 tar 명령이 없다면 exec 명령으로 대체할 수 있다.

kubectl cp <file-spec-src> <file-spec-dest>

 

경로 지정 시 절대 경로로 지정하되, pod의 경로는 루트를 의미하는 최상의 /는 없이 지정한다.

 

 

예시

로컬(클라이언트) -> 포드 복사

만약 포드가 멀티 컨테이너로 구성되어 있고, 복사할 컨테이너를 지정하고 싶다면 -c 옵션을 사용한다.

kubectl cp <src_path> <some-pod>:<dest_path>

# 포드 네임스페이스 지정
kubectl cp <src_path> <some-namespace>/<some-pod>:<dest_path>

# 컨테이너 지정하여 복사
kubectl cp <src_path> <some-pod>:<dest_path> -c <specific-container>

포드 컨테이너 내에 tar 명령이 없다면, 아래 명령어를 사용할 수 있다.

tar cf - <src_path> | kubectl exec -i -n <some-namespace> <some-pod> -- tar xf - -C <dest_path>

 

 

포드 -> 클라이언트(로컬) 복사

kubectl cp <some-namespace>/<some-pod>:<scr_path> <dest_path>

포드 컨테이너 내에 tar 명령이 없다면, 아래 명령어를 사용할 수 있다.

kubectl exec -n <some-namespace> <some-pod> -- tar cf - <scr_path> | tar xf - -C <dest_path>

 

 

참고 문서

https://kubernetes.io/ko/docs/reference/kubectl/cheatsheet

https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#cp

 

 

728x90