해결된 질문
작성
·
945
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
말씀처럼, 이제 컨테이너 및 운영 환경을 활용해보려 하고 있습니다.
VM위주로 쓰다 보니, 컨테이너 관리 및 운영에 대해서도 궁금한 점이 많네요.
참조해서 더 공부해 보겠습니다.
감사합니다.
0
안녕하세요. 오랫만에 질문 주셨네요.
질문들이 협업에서 프로젝트 중이신거 같은데 맞나요? ㅎ
운영하시다 보면 해당 문제가 발생하는게 맞고요.
일단 이미지 삭제에 대해서는 운영 정책을 세우고 진행하는 부분이라 운영환경 마다 어떻게 할지 틀려집니다.
여튼 해당 문제에 대해서 고민 할 부분은
첫째로, 도커 이미지를 어떻게 관리하는게 좋은지 알아봐야합니다.
삭제하면 되지만 삭제 빈도를 줄이기 위해서 사용할때 잘 사용해야되니까요.
해당 내용은 구글링을 해보시면서 컴팩트하게 이미지를 관리하는 방법들을 찾아봐야하고요.
둘째로, 여튼 이미지를 지워야 하는 상황에서 어떻게 효율적으로 지울수 있을까에 대한 부분입니다.
마지막에 질문하신 내용이네요. 아마 일일이 삭제하다가 잘못 삭제 할 수 있는 부분에 대해서 걱정이 되실 것 같아요.
두가지 방법이 있습니다.
- docker : 일일이 노드마다 접속해야되고요. docker system prune 로 검색해보시면 docker에서 사용하지 않는 도커 오브젝트들에 대해서 안전하게 삭제할 수 있도록 가이드가 있습니다.
- kubernetes : kubelet 가비지 설정이 있습니다. kubenetes에서 사용되지 않는 이미지나 컨테이너들을 정리하는 기능이고요. 아래 URL 참고하시면 됩니다.
https://kubernetes.io/ko/docs/concepts/cluster-administration/kubelet-garbage-collection/
강의가 도움이 되셨다면 수강평도 부탁드려요^^