본문 바로가기

Cloud/Kubernetes

[Kubernetes] "kubectl cp" 명령어를 통한 파일 이동

Kubernetes를 사용하는 경우 pod에서 실행되는 컨테이너간에 파일을 이동해야 하거나 local상에 존재하는 파일을 Pod로 이동해야하는 경우가 있습니다. tomcat의 war파일이 잘못 들어가서 pod의 crashloopbackoff 상태가 된 경우가 생겨  해당 명령어를 용이하게 사용하였습니다.

 

war파일이 저장되는 경로에 pvc가 붙어 있었던 상태 였으며 ReadWriteMany 모드로 구성되어 있었기 때문에 해당 경로에 deploy를 띄어 접근하여 파일을 변경 하여 해결하였던 경우가 있습니다.

 


기본적인 명령어 문법

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

 

기본 문법은 위와 같으며 linux의 cp명령어와 사용방법은 비슷합니다.

Pod의 경로에 복사한다는 경우만 제외 한다면...

 

1. local > pod

* 절대 경로혹은 상대 경로로 기입

$ kubectl cp /path/to/file my-pod:/path/to/file

 

$ kubectl cp my-file my-pod:my-file

 

2. pod > pod

$ kubectl cp pod-1:my-file pod-2:my-file

 

3. pod > local

$ kubectl cp my-pod:my-file my-file

 

4. pod에 container가 여러개인 경우

$ kubectl cp my-file my-pod:my-file -c my-container-name

 

LoadBalancer나 NodePort를 붙여 22번 포트로 붙어 파일을 옮기는 것 보단 사용에 따라 편리할 것으로 생각 된다.

파일이 자주 변경이 되는 경우에는 SFTP역할을 하는 POD를 하나 생성하여 관리를 하는 방법도 생각하면 좋을 것 같다.