• システム開発に関わる内容をざっくりと書いていく

Kubernetes ImagePullBackOff 原因と対策

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 と切り分けてから中身のログを見に行く

関連記事