順を追った Cloud Service Mesh のトラブルシューティング手順
このセクションでは、Cloud Service Mesh の使用時に発生する問題のトラブルシューティングと解決方法について説明します。さらにサポートが必要な場合は、サポートの利用をご覧ください。
トラブルシューティング手順
Cloud Service Mesh のトラブルシューティングは、次の手順に沿って行います。
- 構成の自動検証ツールを使用する。
- 発生している問題が一般的な問題で、既知の解決策があるかどうか確認する。
- 問題の範囲を絞り込む。
- 関連するログと情報を確認する。
- 診断ログを収集して解決策を探す。
自動検証ツールを使用する
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 の一般的な問題と解決策が機能領域別にまとめられています。発生している症状がこれらの問題に一致しているかどうか確認することで、トラブルシューティングの時間を短縮できます。
- インストールに関する問題
- 管理対象コントロール プレーンの問題
- オブザーバビリティの問題
- Google Cloud 外のデプロイに関する問題
- プロキシに関する問題
- リソースに関する問題
- スケーリングに関する問題
- セキュリティの問題
- トラフィック管理に関する問題
- Webhook の問題
- サイドカー プロキシに関する問題
ここで問題が解決しない場合は、次のセクションに進んでください。
問題の範囲を絞り込む
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 ログの解釈方法をご覧ください。