이번 project의 monitoring 담당을 맡으면서 Prometheus 구축을 시도하기로 했다.
방식은 크게 두 가지가 있는데 하나는 bitnami에 있는 prometheus의 이미지를 받거나 다른 하나는 prometheus-community에 다양한 패키지를 제공하는 stack을 받는 방식이다.
이 중 bitnami에서 prometheus를 받으면서 겪은 일화를 풀어보겠다.
prometheus pod, service 생성을 위해 이미지를 다운 받은 후 watch kubectl을 통해 확인을 해봤는데 “ImagePullBackOff”가 뜨면서 다운을 받지 못하는 현상이 발생했다.

상태창에 나타난 "ImagePullBackOff"가 무슨의미인지 궁금했고 정확한 원인을 알기 위해 현재 오류가 나오는 pod의 상태를 자세히 검색해봤다.
kubectl describe -n monitor pod mymonitor-prometheus-server-5d5f5fbd5c-l8dnq

Event 확인 결과 “Failed to pull iamge “docker.io/bitnami/prometheus:3.5.0…. = NotFound”
이미지를 찾지 못해 Prometheus 이미지를 내려 받는데 실패하고 있다.
이는 이미지가 원래 저장소에 없다는 뜻하는데 쉽게 풀이해보면 이렇다.
쿠버네티스를 물류센터라고 생각해 보면
Pod는 프로그램을 실행할 작업 공간
컨테이너 이미지는 프로그램을 실행하는 데 필요한 설계도와 부품이 담긴 상자
bitnami는 그 상자를 보관하고 배포하는 창고
ImagePullBackOff는 작업자가 창고에서 필요한 상자를 가져오지 못해, 시간을 늘려 가며 재시도하는 상태다.
커뮤니티를 확인해보니 bitnami는 25년 08월부터 기존 버전 이미지의 저장소를 docker.io/bitnami/ -> docker.io/bitnamilegacy 변경했다고 한다.
따라서 저장소를 재등록하는 과정을 거치면 이 오류는 해결할 수 있다는 것이다.
helm의 차트 목록을 최신상태로 갱신했다.
helm repo update bitnami
기존에 설치된 버전을 확인하고
helm show chart bitnami/prometheus
helm 차트 갱신하니
helm upgrade mymonitor bitnami/prometheus \
--namespace monitor \
--version 2.1.23 \
--reuse-values \
--set global.security.allowInsecureImages=true \
--set server.image.registry=docker.io \
--set server.image.repository=bitnamilegacy/prometheus \
--set alertmanager.image.registry=docker.io \
--set alertmanager.image.repository=bitnamilegacy/alertmanager
2~3분 뒤 watch kubectl get all -n monitor -o wide를 통해 설치가 제대로 된다는 것을 확인 할 수 있었다.

저장소에 이미지가 없으면 이미지가 존재하는 저장소를 확인하고 등록하자!