Pod が Running にならず CrashLoopBackOff——起動しては落ちるを繰り返している状態だ。イメージ取得はできていることが多いので、次はアプリの起動失敗・プローブ・設定不足を疑う。
先に結論
kubectl describe pod と kubectl logs(前回ログ含む)が一次情報
- ExitCode、OOMKilled、プローブ失敗、設定/Secret 不足を順に見る
- ImagePullBackOff とは別物(あちらは取得失敗)
- ローカルと同じ設定でも、クラスタの ConfigMap/環境変数差分で落ちることが多い
見る順番
describe の Events(Back-off、Failed、Unhealthy)
logs / logs --previous で例外や missing config
- コンテナの Last State の Reason/Exit Code
- liveness/readiness の時期と閾値(起動が遅いと殺される)
- リソース制限で OOM、読み取り専用 FS、権限(runAsNonRoot)
よくある原因
- 必須環境変数/接続先不足でプロセス即終了
- マイグレーション失敗で起動フックが落ちる
- liveness が早すぎて起動中に再起動ループ
- 依存サービス未就绪(DB/API)でリトライせず終了
- コマンド/引数の誤り(シェル形式の取り違え)
対処の考え方
- まずログでアプリ例外を特定し、設定を直す
- 起動が遅いなら startupProbe や初期遅延を見直す
- OOM ならメモリ要求/制限とアプリ実使用を合わせる
- 一時的にコマンドを sleep に変えて中に入るのは最終手段(本番では慎重に)
ざっくりまとめ
- CrashLoop=起動後に落ちている。logs が本丸
- 設定・プローブ・OOM・依存を順に疑う
- ImagePull 系と混ぜない
関連記事