すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:Pod の異常に関するトラブルシューティング

最終更新日:Feb 10, 2026

この包括的なガイドでは、Kubernetes 環境における一般的な Pod の異常を診断し、解決するための体系的なアプローチを提供します。スケジューリングの問題、イメージの問題、起動の失敗、Readiness の懸念、リソースの制約などを対象としています。

クイックリファレンスガイド

このクイックリファレンスを使用して、症状に基づいて一般的な Pod の問題を特定し、解決します:

症状

考えられる原因

即時対応

Pending ステータス

スケジューリングの制約またはリソース不足

ノードリソースとスケジューリングポリシーの確認

ImagePullBackOff/ ErrImagePull

イメージレジストリの接続性または認証の問題

imagePullSecrets とレジストリアクセスの検証

CrashLoopBackOff

アプリケーションの起動失敗または構成エラー

コンテナーログと起動コマンドの確認

Running だが Ready: False

ヘルスチェックプローブの失敗

readiness プローブ構成の検証

OOMKilled

不十分なメモリ割り当てまたはメモリリーク

メモリ制限の調整とアプリケーションのメモリ使用量の確認

体系的な診断プロセス

この構造化されたアプローチに従って、Pod の異常を体系的に特定し、解決します:

トラブルシューティングのワークフロー

image

フェーズ 1:初期評価

  1. コンソールまたは kubectl を使用して Pod のステータスを確認します:

    kubectl get pods -n <namespace>
  2. Pod のイベントを調べてエラーメッセージを確認します:

    kubectl describe pod <pod-name> -n <namespace>
  3. コンテナーのログをレビューしてアプリケーションレベルのエラーを確認します:

    kubectl logs <pod-name> -n <namespace> --previous

フェーズ 2:スケジューリングの問題

Pod が Pending ステータスのままになる

Pod が Pending ステータスのままの場合、スケジューリングの制約とリソースの可用性を調査します。

エラーメッセージ

根本原因

解決手順

no nodes available to schedule pods

クラスター内に利用可能な正常なノードがない

  1. ノードのヘルスステータスを確認する

  2. ノードプールのキャパシティを検証する

  3. スケジューリングの制約 (nodeSelector, アフィニティ) をレビューする

CPU 不足
メモリ不足

リソース要求がノードの容量を超えています

  1. ノードのリソース割り当て率を確認します。

  2. ワークロードのリソースリクエストを最適化します。

  3. 必要に応じて、ノードプールをスケールアウトします。

didn't match Pod's node affinity/selector

ノードのラベリングが Pod のスケジューリング要件と一致していません。

  1. ノードラベルが Pod の要件と一致することを確認します。

  2. ワークロードのスケジューリングポリシーを調整します。

  3. 必要に応じてノードラベルを更新します。

リソース最適化戦略

効果的なリソース管理により、スケジューリングの問題を防止し、クラスターの利用効率を最適化できます。

コンソールによる最適化

  1. クラスターノード管理ページに移動します。

  2. CPU/メモリのリクエスト割り当て率を確認します。

  3. リソース使用率が低いワークロードを特定し、適切なサイズ(rightsizing)を実施します。

  4. 動的なレプリカ数調整のために Auto Scaling(HPA)を有効化します。

コマンドラインによる最適化

# ノードのリソース使用率を表示
kubectl top nodes

# Pod のリソースリクエストを確認
kubectl describe pod <pod-name> -n <namespace> | grep -A 10 "Resources:"

# 推奨事項のためのリソースプロファイリングを有効化
# (自動リソース最適化を実現するコンソール機能)

フェーズ 3: イメージプルの失敗

一般的なイメージプルエラー

エラータイプ

原因

ソリューション

ErrImagePull

イメージレジストリへのネットワーク接続性の問題

ノードからのレジストリ接続性をテストする

ImagePullBackOff

認証失敗または認証情報の不足

imagePullSecrets の構成を確認する

ErrImageNeverPull

PullNever ポリシーでローカルにイメージが見つからない

プルポリシーを変更するか、イメージの可用性を確保する

イメージプルのトラブルシューティング手順

  1. イメージリポジトリの URL とタグの正確性を確認する

  2. imagePullSecrets が存在し、正しく参照されていることを確認する

  3. ワーカーノードからのレジストリ接続性をテストする:

    crictl pull <registry-address>/<image>:<tag>
    curl -v https://<registry-address>
  4. レジストリ認証情報を検証する

  5. レジストリへのアクセスを許可するネットワークポリシーを確認する

フェーズ 4:アプリケーションの起動に関する問題

CrashLoopBackOff の分析

コンテナーが繰り返しクラッシュする場合、アプリケーションまたは構成に根本的な問題が存在します。

調査手順

  1. クラッシュ原因を特定するため、以前のコンテナーログを確認します:

    kubectl logs <pod-name> --previous -n <namespace>
  2. コンテナーの起動コマンドおよび引数を確認します

  3. 環境変数および構成を検証します

  4. 必要な依存関係およびサービスの可用性を確認します

  5. アプリケーションのヘルスチェック構成を確認します

よくあるクラッシュ原因

  • 起動コマンドの欠落または誤り

  • 構成ファイルのエラー、またはファイルの欠落

  • 依存サービスの利用不可

  • 権限不足またはセキュリティ制約による実行失敗

  • ポート競合またはバインド失敗

  • 起動時のリソース制限違反

フェーズ 5: Readiness とヘルスチェックの問題

Pod は実行中だが準備未完了 (Ready: False)

Pod のステータスが Running と表示されているにもかかわらず readiness プローブに失敗する場合は、ヘルスチェックの構成を調査してください。

検証チェックリスト

  • readiness プローブのエンドポイントが存在し、正しく応答することを確認します。

  • プローブのタイムアウトと失敗のしきい値の設定を確認します。

  • プローブのエンドポイントへのネットワーク接続をチェックします。

  • プローブのポートがアプリケーションのリッスンポートと一致することを検証します。

  • プローブのパスがアプリケーションのルートと一致することを確認します。

一時的な回避策

調査中にトラフィックを許可するために、一時的に readiness プローブを無効化します:

  1. コンソールから Pod のターミナルにアクセスするか、`kubectl exec` を使用します。

  2. `curl` または `wget` コマンドを使用して、ヘルスエンドポイントを手動でテストします。

  3. readiness チェックなしでアプリケーションが正しく機能していることを確認します。

  4. 根本原因を特定するために、メトリックとログを収集します。

  5. 調査結果に基づいて readiness プローブの構成を調整します。

  6. 問題が解決したら、readiness プローブを再度有効化します。

説明

この回避策は、調査目的でのみ一時的に使用してください。本番環境では、必ず readiness プローブを再度有効化してください。

フェーズ6:リソースとメモリの問題

OOMKilled状態の分析

メモリ不足の状況はPodの終了を引き起こし、慎重なリソース管理が必要です。

調査手順

  1. OOM killログを確認します。

    kubectl logs <pod-name> --previous -n <namespace> | grep -i oom
  2. メモリ使用パターンとスパイクを分析します。

  3. アプリケーションコード内のメモリリークを確認します。

  4. JavaアプリケーションのJVMヒープ設定 (-Xmxパラメーター) を確認します。

  5. メモリリソース制限を実際の使用量に対して検証します。

メモリ最適化

  • アプリケーションが正当により多くのRAMを必要とする場合は、メモリ制限を増やします。

  • メモリプロファイリングを実装して使用パターンを特定します。

  • アプリケーションのメモリ割り当てとGCを最適化します。

  • 動的メモリ調整のために垂直Pod自動スケーリングを検討します。

  • サービス品質を確保するために適切なメモリリクエストを設定します。

よくある質問

実行中の Pod が正常に動作しない問題

アプリケーション構成の問題により、Pod が正常に動作しないまま実行されることがあります。

  1. コンテナーの構成が想定通りであることを確認してください。

  2. YAML 構成に構文エラーがないか確認してください。

  3. 環境変数の値とシークレットを検証してください。

  4. サービスディスカバリーと DNS 名前解決を確認してください。

  5. 該当する場合、コンテナー間の通信をテストしてください。

Completed 状態について

ジョブや init コンテナーなどの特定のワークロードでは、プロセスが正常に終了すると Pod が Completed 状態に移行しますが、これは正常な動作です。

トラブルシューティングの一般的なインターフェイス

包括的な Pod のトラブルシューティングを行うには、Container Service for Kubernetes (ACK) コンソールから以下のインターフェイスにアクセスします。

操作

コンソールインターフェイス

Pod のステータスおよび基本情報を表示

クラスター > ワークロード > Pod

Pod の構成を確認

Pod 詳細 ページ > 構成 タブ

Pod のイベントを確認

Pod 詳細 ページ > イベント タブ

コンテナーのログにアクセス

Pod 詳細 ページ > ログ タブ

コンテナーのターミナルに接続

Pod 詳細 ページ > ターミナルアクセス

Pod の診断機能を有効化

Pod 詳細 ページ > 診断ツール