ポッドの再始動が繰り返し失敗するまたはポッドが予期せず除去されるのはなぜですか?

再起動に繰り返し失敗したり、「 CrashLoopBackOff 」ループに陥ったり、クラスターから予期せず削除されたりするポッドのトラブルシューティングを行います。

仮想プライベートクラウド クラシック・インフラストラクチャー

ポッドは正常ですが、予期せずに除去されたり、再始動ループから抜け出せなくなったりします。 コンテナが CrashLoopBackOff

コンテナーがリソース制限を超えているか、または、ポッドがより優先度の高いポッドに置き換えられている可能性があります。 Kubernetes コンテナの起動が繰り返し失敗すると、コンテナは「 CrashLoopBackOff 」状態となり、これはポッド内で再起動ループが継続していることを示します。 このエラーは、コンテナの正常な起動を妨げるさまざまな問題が原因で発生することが多い。 一般的な原因としては、メモリ不足、リソースの過負荷、デプロイメントエラー、DNSエラーなどのサードパーティサービスの問題、依存関係の欠落、ポートの競合によるコンテナの失敗などが考えられる。

以下のセクションを参照してください。

コンテナー・リソース制限の修正

  1. ポッドの名前を取得します。 ラベルを使用していた場合は、それを使用して結果をフィルタリングできます。
    kubectl get pods --selector='app=wasliberty'
    
  2. ポッドに対して describe を実行して、Restart Count を検索します。
    kubectl describe pod
    
  3. ポッドが短時間で何回も再始動していた場合は、その状況をフェッチします。
    kubectl get pod <pod_name> -n <namespace> -o go-template='{{range.status.containerStatuses}}{{"Container Name: "}}{{.name}}{{"\r\nLastState: "}}{{.lastState}}{{end}}'
    
  4. 理由を確認します。 たとえば、「 OOM Killed 」というエラーは、メモリ不足を意味しており、リソース制限が原因でコンテナがクラッシュしていることを示しています。
  5. リソース要件を満たせるよう、ワーカープールのサイズ変更などを行って、クラスターの容量を増強してください。 詳しくは、 クラシック・ワーカー・プールのサイズ変更 または VPC ワーカー・プールのサイズ変更 を参照してください。

優先度が高いポッドによるポッド置換の修正

ポッドがより優先度の高いポッドに置き換えられているかどうかを確認するには、以下のようにします。

  1. ポッドの名前を取得します。

    kubectl get pods
    
  2. ポッドの YAML を記述します。

    kubectl get pod <pod_name> -o yaml
    
  3. priorityClassName フィールドを調べます。

    1. priorityClassName フィールドに値がない場合、対象ポッドの優先度クラスは globalDefault です。 クラスター管理者が globalDefault 優先度クラスを設定しなかった場合、デフォルトはゼロ (0)、つまり最も低い優先度です。 より高い優先度クラスを持つポッドによって、対象ポッドが置き換わる (または削除される) ことがあります。

    2. priorityClassName フィールドに値がある場合は、優先度クラスを取得します。

        kubectl get priorityclass <priority_class_name> -o yaml
        ```
    3. `value` フィールドを書き留め、ポッドの優先度を調べます。
    
    
  4. クラスター内の既存の優先度クラスをリストします。

    kubectl get priorityclasses
    
  5. それぞれの優先度クラスについて YAML ファイルを取得し、value フィールドを書き留めます。

    kubectl get priorityclass <priority_class_name> -o yaml
    
  6. 対象ポッドの優先度クラスの値を他の優先度クラスの値と比較し、優先度が他のクラスより高いか低いかを調べます。

  7. クラスター内の他のポッドについてもステップ 1 から 3 を繰り返し、使用されている優先度クラスを確認します。 これらの他のポッドの優先度クラスが対象ポッドより高い場合、対象ポッドおよび優先度が高い各ポッドに十分なリソースが用意されるまで、対象ポッドはプロビジョンされません。

  8. クラスタの容量を増やすには、クラスタ管理者に連絡し、適切な優先度クラスが割り当てられていることを確認してください。