• 카테고리

    질문 & 답변
  • 세부 분야

    데브옵스 · 인프라

  • 해결 여부

    해결됨

쿠버네티스에서의 이미지 관리

20.05.21 17:01 작성 조회수 719

1

쿠버네티스에서의 이미지 관리

강의 잘 보고 있습니다. 감사합니다!

쿠버네티스에서의 node내 이미지 관리 관련 문의 드립니다.

쿠버네티스를 운영하면 분명 여러번 app 이미지를 수정 배포하는 경우가 많을 것입니다.

쿠버네티스 설치 강의에서 docker를 각 node 마다 설치하는 것으로 보아,

결국 이미지를 컨테이너로 구동하는 역할은 각 node의 docker 엔진일텐데, 

각 node마다 다운로드된 이미지들은 어떻게 관리할 수 있나요?

아래와 같은 환경을 가정해보겠습니다.

-node 2개(node1, node2)

1. 초기 이미지 배포

-deployment(ver1)에서 A1이미지 참조

-node1에 pod 스케쥴링되어, node1에서 A1 이미지 다운로드 받아 pod1생성

2. app에 수정이 발생하여, A2이미지 빌드

-deployment(ver1)수정하여 deployment(ver2)에서 A2이미지 참조히도록 변경

-node2에 pod 스케쥴링, node2에서 A2 이미지 다운로드 받아 pod2생성

(이전과 같은 node1에 pod가 스케쥴링되도 동일한 경우라 생각합니다)

이 경우 node에 배포된 이전 이미지, A1은 수동으로 삭제처리를 해줘야 하는지요?

A1이미지는 실행중인 pod의 이미지가 아닌, 이전 버전의 이미지데도 node상에 공간을 차지하여 낭비가 될 것 같습니다.

여러번 deployment를 수정하여 이미지가 계속 수정될 경우, 이전 이미지로 인한 node의 저장공간 사용이 크리라 봅니다.

k8s에서 위와 관련하여 지원하는 기능이 있는지 궁금합니다.

가장 단순하게, node마다 접속하여 docker images/docker rmi 명령으로 일일이 삭제해야 할까요?

답변 2

·

답변을 작성해보세요.

1

BrownK님의 프로필

BrownK

질문자

2020.05.22

말씀처럼, 이제 컨테이너 및 운영 환경을 활용해보려 하고 있습니다.

VM위주로 쓰다 보니, 컨테이너 관리 및 운영에 대해서도 궁금한 점이 많네요.

참조해서 더 공부해 보겠습니다.

감사합니다.

0

안녕하세요. 오랫만에 질문 주셨네요.

질문들이 협업에서 프로젝트 중이신거 같은데 맞나요? ㅎ

운영하시다 보면 해당 문제가 발생하는게 맞고요.

일단 이미지 삭제에 대해서는 운영 정책을 세우고 진행하는 부분이라 운영환경 마다 어떻게 할지 틀려집니다.

여튼 해당 문제에 대해서 고민 할 부분은

첫째로, 도커 이미지를 어떻게 관리하는게 좋은지 알아봐야합니다. 

삭제하면 되지만 삭제 빈도를 줄이기 위해서 사용할때 잘 사용해야되니까요.

해당 내용은 구글링을 해보시면서 컴팩트하게 이미지를 관리하는 방법들을 찾아봐야하고요.

둘째로, 여튼 이미지를 지워야 하는 상황에서 어떻게 효율적으로 지울수 있을까에 대한 부분입니다.

마지막에 질문하신 내용이네요. 아마 일일이 삭제하다가 잘못 삭제 할 수 있는 부분에 대해서 걱정이 되실 것 같아요.

두가지 방법이 있습니다. 

- docker : 일일이 노드마다 접속해야되고요. docker system prune 로 검색해보시면 docker에서 사용하지 않는 도커 오브젝트들에 대해서 안전하게 삭제할 수 있도록 가이드가 있습니다.  

- kubernetes : kubelet 가비지 설정이 있습니다. kubenetes에서 사용되지 않는 이미지나 컨테이너들을 정리하는 기능이고요.  아래 URL 참고하시면 됩니다. 

https://kubernetes.io/ko/docs/concepts/cluster-administration/kubelet-garbage-collection/

강의가 도움이 되셨다면 수강평도 부탁드려요^^