クラッシュループ
CoddyのTerminalジャーニー「Kubernetes入門」セクションの一部。レッスン 24/45。
コンテナは実行を継続することが期待されます。コンテナのプロセスが終了すると、Kubernetes はコンテナを再起動します(Pod の restartPolicy はデフォルトで Always です)。何度も終了を繰り返すと、ステータスは CrashLoopBackOff になり、各再起動の前の待機時間が長くなるとともに、RESTARTS 列の値が増加します。
ここに、メッセージを出力して意図的に失敗するコンテナがあります:
kubectl run crash --image=busybox -- sh -c "echo boom; exit 1"-- の後にあるすべての部分が、コンテナが実行するコマンドです。Pod を数回一覧表示し、ステータスが Running から Error、そして CrashLoopBackOff へ変化する様子を確認してください。
理由はログにあります:kubectl logs crash は、コンテナが最後に出力した内容である boom を表示します。単純な busybox のように、実行するものが何もないイメージでさえ、すぐに終了して同じループに陥ります。Pod には実行を継続するプロセスが必要です。
チャレンジ
簡単busybox イメージから crash という名前の Pod を作成し、sh -c "echo boom; exit 1" コマンドを実行します。そのログを出力してから、Pod を 2 回一覧表示し、ステータスが CrashLoopBackOff になることを確認します。
自分で試してみよう
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
Kubernetes入門のすべてのレッスン
自分で練習してみよう: Terminalプレイグラウンド