順を追った Cloud Service Mesh のトラブルシューティング手順

このセクションでは、Cloud Service Mesh の使用時に発生する問題のトラブルシューティングと解決方法について説明します。さらにサポートが必要な場合は、サポートの利用をご覧ください。

トラブルシューティング手順

Cloud Service Mesh のトラブルシューティングは、次の手順に沿って行います。

  1. 構成の自動検証ツールを使用する。
  2. 発生している問題が一般的な問題で、既知の解決策があるかどうか確認する。
  3. 問題の範囲を絞り込む。
  4. 関連するログと情報を確認する。
  5. 診断ログを収集して解決策を探す。

自動検証ツールを使用する

Cloud Service Mesh には、診断と構成検証を自動的に行うツールが含まれています。これらのツールにより問題を解決し将来の発生を回避できます。以降のセクションでは、これらのツールの使用方法について説明します。

istioctl analyze

istioctl analyze 診断ツールでは、一般的な構成の問題を検出できます。こちらの手順istioctl をインストールします。

istioctl analyze はクラスタ構成を読み取ります。問題が見つかると、情報メッセージを表示して解決策を提示します。このツールは、ライブクラスタだけでなく、ローカル構成ファイルのセットにも実行できます。この両方に実行し、クラスタに変更を適用する前に問題を見つけることもできます。詳細については、istioctl analyze による構成の診断をご覧ください。istioctl analyze で検出されるエラーの詳細については、構成分析メッセージをご覧ください。

ライブクラスタを分析する

ライブクラスタを分析するには、次のコマンドを実行します。

istioctl analyze -A

istioctl analyze で構成の問題が検出されると、問題解決に役立つ情報を示すメッセージが表示されます。たとえば、名前空間に正しいラベルが設定されていないために Istio サイドカー インジェクションを有効にできなかった場合、次のようなメッセージが表示されます。

Warn [IST0102] (Namespace default) The namespace is not enabled for Istio injection.
Run 'kubectl label namespace default istio-injection=enabled' to enable it,
or 'kubectl label namespace default istio-injection=disabled'
to explicitly mark it as not needing injection

問題が解決しない場合は、次のセクションを参照して既知の問題かどうか確認してください。

よくある問題とその解決策を確認する

Cloud Service Mesh の一般的な問題と解決策が機能領域別にまとめられています。発生している症状がこれらの問題に一致しているかどうか確認することで、トラブルシューティングの時間を短縮できます。

ここで問題が解決しない場合は、次のセクションに進んでください。

問題の範囲を絞り込む

Cloud Service Mesh は、相互に連携する複数のテクノロジーで構成されます。つまり、特定の種類の問題が特定の機能領域やコンポーネントに関連していることを意味します。これらのコンポーネントは問題の解決に役立つログを生成します。提供された情報を手動で分析する前に、次の質問に答えて問題の範囲を絞り込みます。

  • この問題は、コントロール プレーンまたはデータプレーン(istiod や Envoy プロキシなど)で発生していますか?
  • どの機能領域(ネットワーク、テレメトリー、セキュリティなど)で問題が発生していますか?
  • トラフィックの損失が発生しているのはサービス メッシュ全体ですか。それとも特定のデプロイメントですか?
  • サービス メッシュでトラフィックをスケーリングできないため、問題が発生または悪化していますか?
  • この問題が原因で遅延やその他のパフォーマンスの問題が発生していますか?
  • 問題をオンデマンドで再現できますか?
  • Istio や GKE など、最近の構成変更後に問題が発生しましたか?
  • サービス メッシュ内でトラフィックが増加または急増していますか?
  • このクラスタで、重要な機能が有効になっていますか。あるいは一般的でないデプロイがありますか?
  • CPU またはメモリの使用率が高くなっていますか。その場合、想定される規模はどの程度ですか?
  • 考慮すべき割り当て制限はありますか?

コントロール プレーンのステータスを確認する

次のコマンドを使用すると、Cloud Service Mesh のコントロール プレーンのステータスを確認できます。

  • kubectl get pods -n istio-system
  • kubectl describe -n istio-system
  • istio-system 内のすべての Pod の場合: kubectl logs -n istio-system -l istio --all-containers
  • istioctl version
  • istioctl proxy-status
  • kubectl get configmap istio -o yaml && kubectl get configmap istio-sidecar-injector -o yaml
  • kubectl top pods -n istio-system

デプロイの規模を確認するには、次のコマンドを使用します。

  • kubectl get nodes
  • kubectl get services --all-namespaces
  • kubectl get pods --all-namespaces

関連するログと情報の確認

問題の範囲を絞り込むと、特定のログや情報をより効率的に見つけることができます。Cloud Service Mesh によって生成されるログとそのログに含まれる情報の見方については、Cloud Service Mesh ログの解釈方法をご覧ください。