Pod が ImagePullBackOff/ErrImagePull——コンテナ起動以前に、イメージ取得に失敗している状態だ。名前タイポ、タグ無し、認証、レジストリ到達性が原因の大半を占める。
先に結論
kubectl describe pod の Events に pull 失敗理由が出る
- イメージ名・タグ・レジストリホストをまず疑う
- プライベートレジストリは imagePullSecrets/ノード権限が必要
- latest 依存や存在しないタグも定番。digest 固定が安心なこともある
切り分け
- Events の Failed to pull image/unauthorized/not found を読む
- マニフェストの image 文字列をコピーして、手元や CI から同じ参照で pull できるか確認
- Namespace の ServiceAccount に pull secret が付いているか
- ノードからレジストリへネットワーク/DNS/TLS が通るか
- マルチアーキ(arm/amd)で該当タグが無いか
よくある原因
- リポジトリ名やタグのタイポ
- プライベートなのに secret 未設定・期限切れ
- レート制限(公開レジストリの匿名 pull)
- 社内レジストリの自己署名証明書をノードが信頼していない
- imagePullPolicy とタグ運用の組み合わせで意図と違う参照
対策
- 正しい image 参照に直し、必要なら pull secret を付与
- CI で push したタグと deploy マニフェストのタグを同じパイプラインで渡す
- 本番は mutable な latest を避け、版付きタグや digest を使う
- ノード/クラスタのレジストリ到達性と認証を定期的に確認
ざっくりまとめ
- ImagePullBackOff は取得失敗。describe の Events が本丸
- 名前・認証・ネットワーク・アーキを疑う
- CrashLoop と切り分けてから中身のログを見に行く
関連記事