이전에 Spring Boot 프로젝트를 이미지로 빌드해서 파드로 띄웠다. 하지만 ImagePullBackOff라는 에러가 발생했다. 이 문제는 이미지 풀 정책(Image Pull Policy) 때문에 발생한 것이다. 이미지 풀 정책이 뭔지 알아보자.
이미지 풀 정책(Image Pull Policy)이란 쿠버네티스가 yaml 파일을 읽어들여 파드를 생성할 때, 이미지를 어떻게 Pull을 받아올 건지에 대한 정책을 의미한다. 어떤 정책들이 있는 지 알아보자.
Always
로컬에서 이미지를 가져오지 않고, 무조건 레지스트리(= Dockerhub, ECR과 같은 원격 이미지 저장소)에서 가져온다.
IfNotPresent
로컬에서 이미지를 먼저 가져온다. 만약 로컬에 이미지가 없는 경우에만 레지스트리에서 가져온다.
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
위의 매니페스트 파일에서는 이미지 풀 정책을 따로 설정하지 않았다. 이럴 때는 아래와 같이 작동한다.
latest
이거나 명시되지 않은 경우 : imagePullPolicy
는 Always
로 설정됨latest
가 아닌 경우 : imagePullPolicy
는 IfNotPresent
로 설정됨