✅ 이미지가 없다고 에러가 뜨는 이유

이전에 Spring Boot 프로젝트를 이미지로 빌드해서 파드로 띄웠다. 하지만 ImagePullBackOff라는 에러가 발생했다. 이 문제는 이미지 풀 정책(Image Pull Policy) 때문에 발생한 것이다. 이미지 풀 정책이 뭔지 알아보자.

image.png

✅ 이미지 풀 정책 (Image Pull Policy)

이미지 풀 정책(Image Pull Policy)이란 쿠버네티스가 yaml 파일을 읽어들여 파드를 생성할 때, 이미지를 어떻게 Pull을 받아올 건지에 대한 정책을 의미한다. 어떤 정책들이 있는 지 알아보자.

  1. Always

    로컬에서 이미지를 가져오지 않고, 무조건 레지스트리(= Dockerhub, ECR과 같은 원격 이미지 저장소)에서 가져온다.

  2. IfNotPresent

    로컬에서 이미지를 먼저 가져온다. 만약 로컬에 이미지가 없는 경우에만 레지스트리에서 가져온다.

  3. Never

    로컬에서만 이미지를 가져온다.

✅ 매니페스트 파일에 이미지 풀 정책 설정하는 방법

apiVersion: v1
kind: Pod
metadata:
  name: spring-pod
spec:
  containers:
    - name: spring-container
      image: spring-server
      ports:
        - containerPort: 8080
      **imagePullPolicy: Always**

✅ 기존 매니페스트 파일 다시 살펴보기

spring-pod.yaml

apiVersion: v1
kind: Pod
metadata:
  name: spring-pod
spec:
  containers:
    - name: spring-container
      image: spring-server
      ports:
        - containerPort: 8080

위의 매니페스트 파일에서는 이미지 풀 정책을 따로 설정하지 않았다. 이럴 때는 아래와 같이 작동한다.