개요
쿠버네티스를 사용하다 보면 클라이언트에서 포드 내 디렉터리로 파일을 전달하거나, 포드에 저장된 파일을 클라이언트로 가져오고 싶을 때가 있다. 이런 경우, 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