✅ 現状
ImagePullBackOffエラーが出力されている。

3.Pod - SpringBoot
✅ バックエンド (Spring Boot) サーバーを Pod として起動する1.Spring Boot プロジェクトのセットアップstart.spring.iohttps://start.spring.io/ 2.AppController@RestControllerpublic class AppController { @GetMapping("/") public St
tokyoant.tistory.com
✅ 原因調査
以前、Spring Boot プロジェクトをイメージとしてビルドし、Pod を起動しようとした。しかし、ImagePullBackOff というエラーが発生した。この問題は、イメージプルポリシー (Image Pull Policy) が原因で発生したものである。
✅ Image Pull Policy
イメージプルポリシーとは、クバーネティスがマニフェストファイルを読み込んで Pod を生成する際、イメージをどのように取得(Pull)するかを定義するポリシーである。主に以下の 3 つのポリシーが存在する。
- Always: ローカルのイメージは使用せず、常にレジストリ(Docker Hub、ECR などのリモートリポジトリ)からイメージを取得する。
- IfNotPresent: まずローカルのイメージを確認する。ローカルにイメージが存在しない場合のみ、レジストリから取得する。
- Never: ローカルのイメージのみを使用し、レジストリからは取得しない。
✅ 既存のManifestファイル
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 に設定される。
したがって、既存のManifestファイルは imagePullPolicy が Always として動作していたのである。つまり、ローカルのイメージを使用せず、レジストリから取得しようとした。しかし、spring-server というイメージは Docker Hub にアップロードしたことがないため、イメージを取得できず、エラーが発生したのである。
✅ 解決方法
ローカルにあるイメージを使用するためには、以下のようにポリシーを明示的に設定する必要がある。
spring-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: spring-pod
spec:
containers:
- name: spring-container
image: spring-server
ports:
- containerPort: 8080
imagePullPolicy: IfNotPresent # ローカルイメージを優先して使用
既存の Pod を削除し、再度生成。
$ kubectl delete pod spring-pod
$ kubectl apply -f spring-pod.yaml
$ kubectl get pods
✅ 動作確認


'error' 카테고리의 다른 글
| [kubernetes]exec /opt/java/openjdk/bin/java: exec format error (0) | 2026.03.19 |
|---|---|
| [Docker/kubernetes]Symbolic linkエラー (0) | 2026.03.16 |