본문 바로가기
kubenetes

kubernetes pod에 파일 복사하고 다운로드 받기

by kyeongseo.oh 2022. 3. 30.

kubectl exec [pod-name] -it -- bash 혹은 kubectl exec [pod-name] -it -- sh 커맨드로 실행 중인 pod에

접속할 수 있다.

 

로컬의 파일을 pod에 복사 

kubectl cp 파일이름 pod이름:pod경로

pod의 파일을 로컬에 다운로드 

ubectl cp pod이름:pod경로 파일이름

 

1. pod 이름을 확인한다.

[root@kw1 ~]# kubectl get pod
NAME          READY   STATUS    RESTARTS   AGE
ks-app        1/1     Running   0          32h
ksflask-app   1/1     Running   0          29h
ksimage-app   1/1     Running   0          27h

 

2. 실행 중인 pod에 접속한다.

[root@kw1 ~]# kubectl exec ksimage-app -it -- bash
root@ksimage-app:/app# ls -al
total 12
drwxr-xr-x. 4 root root  97 Mar 29 08:51 .
drwxr-xr-x. 1 root root  40 Mar 29 08:59 ..
-rw-r--r--. 1 root root 268 Mar 29 06:17 Dockerfile
-rw-r--r--. 1 root root 204 Mar 29 08:50 ksFlask.py
-rw-r--r--. 1 root root 174 Mar 29 06:17 requirements.txt
drwxr-xr-x. 2 root root  21 Mar 29 06:19 static
drwxr-xr-x. 2 root root  24 Mar 29 06:17 templates

 

3. pod의 파일을 local에 다운로드한다.

tar: Removing leading `/' from member names 이런 에러가 발생하는 데 찾아보니 k8s bug인 듯함

파일은 다운로드됐음

[root@kw1 ~]# kubectl cp ksimage-app:/app/static/img.jpg ~/test.jpg
tar: Removing leading `/' from member names

 

4. local에 있는 파일을 pod에 전송한다.

[root@kw1 ~]# kubectl cp ~/test.jpg ksimage-app:/app/static/test.jpg

 

확인해보니 잘 들어가있음

[root@kw1 ~]# kubectl exec ksimage-app -it -- bash
root@ksimage-app:/app# ls -al /app/static/
total 416
drwxr-xr-x. 1 root root     37 Mar 30 14:49 .
drwxr-xr-x. 1 root root     37 Mar 29 08:51 ..
-rw-r--r--. 1 root root 211786 Mar 30 13:34 img.jpg
-rw-r--r--. 1 root root 211786 Mar 30 14:49 test.jpg

 

5. 파일 복사 pod to pod

pod에서 pod으로 파일 복사는 지원하지 않음

[root@kw1 ~]# kubectl cp ksimage-app:/app/static/test.jpg ksflask-app:/app/static/test.jpg
error: one of src or dest must be a local file specification

댓글