ポッドに CrashLoopBackOff
状態がある場合、ポッドは予期せず失敗または終了した可能性があり、ログにはゼロではない終了コードが含まれています。 ポッドが CrashLoopBackOff
モードでスタックする理由はいくつかあります。
- アプリケーションの失敗: コンテナー内のアプリケーションは、多くの場合、構成の誤り、依存関係の不足、または不適切な環境変数が原因で、開始直後にクラッシュします。
- 不適切なリソース制限: ポッドが CPU またはメモリリソースの制限を超えると、Kubernetes によってコンテナーが強制終了される可能性があります。 この問題は、リソースの要求または制限が低すぎる場合に発生する可能性があります。
- ConfigMaps/Secrets が見つからない、または正しく構成されていない: アプリケーションが ConfigMaps またはシークレットに格納されている構成ファイルまたは環境変数に依存しているが、それらが見つからないか正しく構成されていない場合、アプリケーションがクラッシュする可能性があります。
- イメージ プルの問題: イメージに問題がある場合 (破損しているか、タグが正しくない場合など)、コンテナーが正しく起動せず、繰り返し失敗する可能性があります。
- Init コンテナーが失敗する: ポッドに init コンテナーがあり、1 つ以上が正常に実行できない場合、ポッドは再起動します。
- Liveness/Readiness プローブエラー: ライブネスまたは準備プローブが正しく構成されていない場合、Kubernetes はコンテナーを異常として検出して再起動する可能性があります。
- アプリケーションの依存関係の準備ができていない: アプリケーションは、データベース、メッセージ キュー、その他の API など、まだ準備ができていないサービスに依存している可能性があります。
- ネットワークの問題: ネットワークの構成ミスにより、アプリケーションが必要なサービスと通信できず、失敗する可能性があります。
-
無効なコマンドまたは引数: コンテナーが無効な
ENTRYPOINT
、コマンド、または引数で起動され、クラッシュする可能性があります。
コンテナーの状態の詳細については、「 ポッドのライフサイクル - コンテナーの状態」を参照してください。
次のオプションとそれに関連する kubectl コマンドを検討してください。
オプション | kubectl コマンド |
---|---|
ポッド自体 デバッグする | kubectl describe pod <pod-name> |
レプリケーション コントローラーをデバッグする | kubectl describe replicationcontroller <controller-name> |
終了メッセージを読み取る | kubectl get pod <pod-name> --output=yaml |
ログを調べる | kubectl logs <pod-name> |
注意
ポッドは、デプロイが完了した場合に CrashLoopBackOff
状態を持つこともできますが、終了コードが 0 の場合でも再起動を継続するように構成されています。 たとえば、引数を指定せずに busybox イメージをデプロイした場合、イメージはループ内で開始、実行、終了、再起動されます。
$ kubectl run nginx --image nginx
pod/nginx created
$ kubectl run busybox --image busybox
pod/busybox created
$ kubectl get pods --watch
NAME READY STATUS RESTARTS AGE
busybox 0/1 ContainerCreating 0 3s
nginx 1/1 Running 0 11s
busybox 0/1 Completed 0 3s
busybox 0/1 Completed 1 4s
busybox 0/1 CrashLoopBackOff 1 5s
$ kubectl describe pod busybox
Name: busybox
Namespace: default
Priority: 0
Node: aks-nodepool<number>-<resource-group-hash-number>-vmss<number>/<ip-address-1>
Start Time: Wed, 16 Aug 2023 09:56:19 +0000
Labels: run=busybox
Annotations: <none>
Status: Running
IP: <ip-address-2>
IPs:
IP: <ip-address-2>
Containers:
busybox:
Container ID: containerd://<64-digit-hexadecimal-value-1>
Image: busybox
Image ID: docker.io/library/busybox@sha256:<64-digit-hexadecimal-value-2>
Port: <none>
Host Port: <none>
State: Waiting
Reason: CrashLoopBackOff
Last State: Terminated
Reason: Completed
Exit Code: 0
Started: Wed, 16 Aug 2023 09:56:37 +0000
Finished: Wed, 16 Aug 2023 09:56:37 +0000
Ready: False
Restart Count: 2
ノードにポッドを追加作成した後に問題が認識されない場合は、1 つのノードでポッドを実行して、ポッドが実際に使用するリソースの数を決定します。
サードパーティの情報に関する免責事項
この資料に記載されているサードパーティ製品は、マイクロソフトと関連のない他社の製品です。 明示的か黙示的かにかかわらず、これらの製品のパフォーマンスや信頼性についてマイクロソフトはいかなる責任も負わないものとします。
お問い合わせはこちらから
質問がある場合やヘルプが必要な場合は、サポート要求を作成するか、Azure コミュニティ サポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。