본문 바로가기
개발/졸업과제

kubernetes server에서 flask 서버로 정보 전송

by 컴쏘 2023. 10. 19.
728x90

사용자의 가상 환경을 그대로 보존하여 Private Docker Registry에 저장하려고 한다. 

 

구현하기 위해 만족해야 하는 상태는 2가지이다. 

  • 사용자의 가상환경이 Kubernetes Server에서 상태 유지가 되고 있는가?
  • 가상환경을 그대로 보존하여 Docker Image로 만들 수 있는가? 

 

[가상환경 상태 유지하기] 

 

참고 링크 

https://nirsa.tistory.com/157

 

사용자의 가상 환경(pod)에 pv, pvc를 할당해 상태를 유지한다. 

 

[Docker Image로 만들기] 

 

팀원과 의견을 나누는 도중에 전체적인 IDEA 흐름이 나오게 되었다. 

내가 제시한 방법은 다음과 같다.  

  • Kubernetes에서 Flask로 사용자의 container image 정보 전달 (kubectl cp)
  • Flask에서 받은 container image 정보를 가지고 Docker Image 만들기 (docker commit) 

괜찮은 방식이라고 생각하여, kubectl cp 명령을 통한 container image 정보 전달은 내가 담당하기로 하였고, 이를 docker commit 방식으로 docker image를 만드는 방식은 다른 팀원이 담당하기로 역할 분배를 하였다. 

 

여기서 발생한 난관은 ....... kubectl cp 명령이 제대로 적용되지 않는다는 것이다. 

 

이것 저것 찾아보던 중 다음의 가이드 문서를 발견....! 

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

 

가이드 문서 내용

참고: kubectl cp 명령을 사용하려면 컨테이너 이미지에 'tar' 바이너리가 포함되어 있어야 한다. 'tar'가 없으면, kubectl cp는 실패할 것이다. 심볼릭 링크, 와일드카드 확장, 파일 모드 보존과 같은 고급 사용 사례에 대해서는 kubectl exec를 고려해 볼 수 있다.

 

역시... 우리의 docker image에는 tar가 없기 때문에 계속해서 실패했던 것이다. 

 

따라서, 처음에 pod를 만들게 되는 기본 이미지인 Base Image에 tar 바이너리를 포함시켰다. 다시 kubectl cp 명령을 했을 때의 결과는.. 성!공! 이었다. 

 

TAR 설치 

 

dockerfile을 만들고 build해서 tar를 설치해주기로 함

FROM kasmweb/desktop:1.14.0

USER root 

RUN apt-get update && apt-get install -y tar

CMD [ "/bin/bash" ]

 

빌드 중

docker build -t registry.p2kcloud.com/base/1/kasmweb:v1 

 

빌드 중

빌드 완료

빌드 완료
harbor에 push
harbor에 push 결과

 

함수화 하기 전 CLI TEST 

 

사용한 명령어 

kubectl exec -n default vm6082-f55858488-md7xt -- tar cf - -C /home/kasm-user/ . | tar xf - -C /home/dockerFile/backup/vm6082/

 

다 잘가져와진다. 

결과

push 하기 

push 결과

 

구현하는데 시간이 많이 소요가 되었다. 중간에 포기할까 생각도 많이 했었는데, 구현하고 싶은 마음이 더 컸기에 포기하지 않고 구현에 집중하였다. 

 

가이드 문서를 다시 꼼꼼하게 잘 살펴보자는 생각이 기능 구현까지 도달하게 한 것 같다. 

역시 가이드 문서는 꼼꼼하게 읽어보기 !!  

 

728x90

'개발 > 졸업과제' 카테고리의 다른 글

졸업과제 수상 및 회고  (0) 2023.11.13
서비스 배포하기  (0) 2023.10.19
kubernetes 사용하기 (2) (with nCloud)  (0) 2023.10.04
kubernetes 사용하기 (with nCloud)  (0) 2023.10.04
Kubernetes Service 사용해보기  (0) 2023.09.10