1.22. Service Mesh のトラブルシューティング


このセクションでは、Red Hat OpenShift Service Mesh で一般的な問題を特定し、解決する方法を説明します。以下のセクションを使用して、Red Hat OpenShift Service on AWS に Red Hat OpenShift Service Mesh をデプロイする際の問題のトラブルシューティングおよびデバッグに役立ちます。

1.22.1. Service Mesh のバージョンについて

ご使用のシステムにデプロイした Red Hat OpenShift Service Mesh のバージョンを理解するには、各コンポーネントのバージョンがどのように管理されるかを理解する必要があります。

  • Operator バージョン - 最新の Operator バージョンは 2.6.4 です。Operator バージョン番号は、現在インストールされている Operator のバージョンのみを示します。Red Hat OpenShift Service Mesh Operator は Service Mesh コントロールプレーンの複数のバージョンをサポートするため、Operator のバージョンはデプロイされた ServiceMeshControlPlane リソースのバージョンを決定しません。

    重要

    最新の Operator バージョンにアップグレードすると、パッチの更新が自動的に適用されますが、Service Mesh コントロールプレーンは最新のマイナーバージョンに自動的にアップグレードされません。

  • ServiceMeshControlPlane バージョン: ServiceMeshControlPlane バージョンは、使用している Red Hat OpenShift Service Mesh のバージョンを決定します。ServiceMeshControlPlane リソースの spec.version フィールドの値は、Red Hat OpenShift Service Mesh のインストールとデプロイに使用されるアーキテクチャーと設定を制御します。Service Mesh コントロールプレーンを作成する場合は、以下の 2 つの方法のいずれかでバージョンを設定できます。

    • Form View で設定するには、Control Plane Version メニューからバージョンを選択します。
    • YAML View で設定するには、YAML ファイルに spec.version の値を設定します。

Operator Lifecycle Manager (OLM) は Service Mesh コントロールプレーンのアップグレードをを管理しないため、SMCP を手動でアップグレードしない限り、Operator および ServiceMeshControlPlane (SMCP) のバージョン番号が一致しない可能性があります。

1.22.2. Operator インストールのトラブルシューティング

1.22.2.1. Operator インストールの検証

Red Hat OpenShift Service Mesh Operator のインストール時に、OpenShift は正常な Operator インストールの一部として以下のオブジェクトを自動的に作成します。

  • config map
  • カスタムリソース定義
  • デプロイメント
  • pods
  • レプリカセット
  • roles
  • ロールバインディング
  • secrets
  • サービスアカウント
  • services

Red Hat OpenShift Service on AWS コンソールの使用

Red Hat OpenShift Service on AWS コンソールを使用して、Operator Pod が使用可能であり、実行していることを確認できます。

  1. Workloads Pods に移動します。
  2. openshift-operators namespace を選択します。
  3. 以下の Pod が存在し、ステータスが running であることを確認します。

    • istio-operator
    • jaeger-operator
    • kiali-operator
  4. openshift-operators-redhat namespace を選択します。
  5. elasticsearch-operator Pod が存在し、ステータスが running であることを確認します。

コマンドラインで以下を行います。

  1. 以下のコマンドを使用して、Operator Pod が利用可能で、openshift-operators namespace で実行していることを確認します。

    $ oc get pods -n openshift-operators

    出力例

    NAME                               READY   STATUS    RESTARTS   AGE
    istio-operator-bb49787db-zgr87     1/1     Running   0          15s
    jaeger-operator-7d5c4f57d8-9xphf   1/1     Running   0          2m42s
    kiali-operator-f9c8d84f4-7xh2v     1/1     Running   0          64s

  2. 以下のコマンドを使用して Elasticsearch Operator を確認します。

    $ oc get pods -n openshift-operators-redhat

    出力例

    NAME                                      READY   STATUS    RESTARTS   AGE
    elasticsearch-operator-d4f59b968-796vq     1/1     Running   0          15s

1.22.2.2. Service Mesh Operator のトラブルシューティング

Operator に問題が発生した場合は、以下を実行します。

  • Operator サブスクリプションのステータスを確認します。
  • サポートされる Red Hat バージョンではなく、コミュニティーバージョンの Operator をインストールしていないことを確認します。
  • Red Hat OpenShift Service Mesh をインストールするために cluster-admin ロールがあることを確認します。
  • 問題が Operator のインストールに関連する場合は、Operator Pod ログでエラーの有無を確認します。
注記

Operator は OpenShift コンソールからのみインストールでき、OperatorHub はコマンドラインからアクセスできません。

1.22.2.2.1. Operator Pod ログの表示

oc logs コマンドを使用して、Operator ログを表示できます。Red Hat は、サポートケースの解決に役立つログをリクエストする場合があります。

手順

  • Operator Pod ログを表示するには、以下のコマンドを入力します。

    $ oc logs -n openshift-operators <podName>

    以下に例を示します。

    $ oc logs -n openshift-operators istio-operator-bb49787db-zgr87

1.22.3. コントロールプレーンのトラブルシューティング

Service Mesh コントロールプレーン は Istiod で構成されており、以前のいくつかのコントロールプレーンコンポーネント (Citadel、Galley、Pilot) を単一バイナリーに統合します。ServiceMeshControlPlane をデプロイすると、アーキテクチャー のトピックで説明されているように、Red Hat OpenShift Service Mesh を設定する他のコンポーネントも作成されます。

1.22.3.1. Service Mesh コントロールプレーンのインストールの検証

Service Mesh コントロールプレーンの作成時に、Service Mesh Operator は ServiceMeshControlPlane リソースファイルに指定したパラメーターを使用して以下を実行します。

  • Istio コンポーネントを作成し、以下の Pod をデプロイします。

    • istiod
    • istio-ingressgateway
    • istio-egressgateway
    • grafana
    • prometheus
  • SMCP または Kiali カスタムリソースのいずれかの設定に基づいて Kaili デプロイメントを作成するには、Kiali Operator を呼び出します。

    注記

    Service Mesh Operator ではなく、Kiali Operator で Kiali コンポーネントを表示します。

  • Red Hat OpenShift 分散トレースプラットフォーム (Jaeger) Operator を呼び出して、SMCP または Jaeger カスタムリソースのいずれかでの設定に基づいて分散トレースプラットフォーム (Jaeger) コンポーネントを作成します。

    注記

    Jaeger コンポーネントは Red Hat OpenShift 分散トレースプラットフォーム (Jaeger) Operator の下に表示され、Elasticsearch コンポーネントは Service Mesh Operator ではなく Red Hat Elasticsearch Operator の下に表示されます。

    Red Hat OpenShift Service on AWS コンソールの使用

    Red Hat OpenShift Service on AWS Web コンソールで Service Mesh コントロールプレーンのインストールを確認できます。

    1. Operators Installed Operators に移動します。
    2. istio-system namespace を選択します。
    3. Red Hat OpenShift Service Mesh Operator を選択します。

      1. Istio Service Mesh Control Plane タブをクリックします。
      2. コントロールプレーンの名前 (basic など) をクリックします。
      3. デプロイメントによって作成されたリソースを表示するには、Resources タブをクリックします。フィルターを使用してビューを絞り込むことができます。たとえば、すべての Pod のステータスが running になっていることを確認できます。
      4. SMCP のステータスが問題を示す場合は、YAML ファイルの status: 出力で詳細を確認してください。
    4. Operators Installed Operators に戻ります。
    5. OpenShift Elasticsearch Operator を選択します。

      1. Elasticsearch タブをクリックします。
      2. デプロイメントの名前をクリックします (例: elasticsearch)。
      3. デプロイメントによって作成されたリソースを表示するには、Resources タブをクリックします。
      4. ステータス 列に問題がある場合は、YAML タブの ステータス: 出力で詳細を確認してください。
    6. Operators Installed Operators に戻ります。
    7. Red Hat OpenShift 分散トレースプラットフォーム (Jaeger) Operator を選択します。

      1. Jaeger タブをクリックします。
      2. デプロイメントの名前をクリックします (例: jaeger)。
      3. デプロイメントによって作成されたリソースを表示するには、Resources タブをクリックします。
      4. ステータス 列に問題がある場合は、YAML タブの status: 出力で詳細を確認してください。
    8. Operators Installed Operators に移動します。
    9. Kiali Operator を選択します。

      1. Istio Service Mesh Control Plane タブをクリックします。
      2. デプロイメントの名前をクリックします (例: kiali)。
      3. デプロイメントによって作成されたリソースを表示するには、Resources タブをクリックします。
      4. ステータス 列に問題がある場合は、YAML タブの ステータス: 出力で詳細を確認してください。

コマンドラインで以下を行います。

  1. 以下のコマンドを実行して、Service Mesh コントロールプレーン Pod が利用可能かどうか確認します。istio-system は SMCP をインストールした namespace になります。

    $ oc get pods -n istio-system

    出力例

    NAME                                   READY   STATUS    RESTARTS   AGE
    grafana-6776785cfc-6fz7t               2/2     Running   0          102s
    istio-egressgateway-5f49dd99-l9ppq     1/1     Running   0          103s
    istio-ingressgateway-6dc885c48-jjd8r   1/1     Running   0          103s
    istiod-basic-6c9cc55998-wg4zq          1/1     Running   0          2m14s
    jaeger-6865d5d8bf-zrfss                2/2     Running   0          100s
    kiali-579799fbb7-8mwc8                 1/1     Running   0          46s
    prometheus-5c579dfb-6qhjk              2/2     Running   0          115s

  2. 次のコマンドを使用して、Service Mesh コントロールプレーンのデプロイのステータスを確認します。istio-system は、SMCP をデプロイした namespace に置き換えます。

    $ oc get smcp -n istio-system

    STATUS 列が ComponentsReady の場合、インストールは正常に終了しています。

    出力例

    NAME    READY   STATUS            PROFILES      VERSION   AGE
    basic   10/10   ComponentsReady   ["default"]   2.1.3     4m2s

    Service Mesh コントロールプレーンを変更および再デプロイする場合、ステータスは UpdateSuccessful が表示されるはずです。

    出力例

    NAME            READY     STATUS             TEMPLATE   VERSION   AGE
    basic-install   10/10     UpdateSuccessful   default     v1.1     3d16h

  3. SMCP のステータスが ComponentsReady 以外の場合は、SCMP リソースの status: 出力で詳細を確認してください。

    $ oc describe smcp <smcp-name> -n <controlplane-namespace>

    出力例

    $ oc describe smcp basic -n istio-system

  4. 以下のコマンドを使用して、Jaeger デプロイメントのステータスを確認します。ここでは、istio-system は SMCP をデプロイした namespace に置き換えます。

    $ oc get jaeger -n istio-system

    出力例

    NAME     STATUS    VERSION   STRATEGY   STORAGE   AGE
    jaeger   Running   1.30.0    allinone   memory    15m

  5. 以下のコマンドを使用して、Kiali デプロイメントのステータスを確認します。ここでは、istio-system は SMCP をデプロイした namespace に置き換えます。

    $ oc get kiali -n istio-system

    出力例

    NAME    AGE
    kiali   15m

1.22.3.1.1. Kiali コンソールへのアクセス

Kiali コンソールでアプリケーションのトポロジー、健全性、およびメトリクスを表示できます。サービスで問題が発生した場合、Kiali コンソールは、サービス経由でデータフローを表示できます。抽象アプリケーションからサービスおよびワークロードまで、さまざまなレベルでのメッシュコンポーネントに関する洞察を得ることができます。Kiali は、リアルタイムで namespace のインタラクティブなグラフビューも提供します。

Kiali コンソールにアクセスするには、Red Hat OpenShift Service Mesh がインストールされ、Kiali がインストールおよび設定されている必要があります。

インストールプロセスにより、Kiali コンソールにアクセスするためのルートが作成されます。

Kiali コンソールの URL が分かっている場合は、直接アクセスできます。URL が分からない場合は、以下の指示を使用します。

管理者の手順

  1. 管理者ロールで Red Hat OpenShift Service on AWS Web コンソールにログインします。
  2. Home Projects をクリックします。
  3. Projects ページで、必要に応じてフィルターを使用してプロジェクトの名前を検索します。
  4. プロジェクトの名前 (例: info) をクリックします。
  5. Project details ページの Launcher セクションで、Kiali リンクをクリックします。
  6. Red Hat OpenShift Service on AWS コンソールにアクセスするときに使用するものと同じユーザー名とパスワードを使用して Kiali コンソールにログインします。

    初回の Kiali コンソールへのログイン時に、表示するパーミッションを持つ Service Mesh 内のすべての namespace を表示する Overview ページが表示されます。

    コンソールのインストールを検証中で、namespace がまだメッシュに追加されていないと、istio-system 以外のデータは表示されない可能性があります。

開発者の手順

  1. 開発者ロールで Red Hat OpenShift Service on AWS Web コンソールにログインします。
  2. Project をクリックします。
  3. 必要に応じて、Project Details ページで、フィルターを使用してプロジェクトの名前を検索します。
  4. プロジェクトの名前 (例: info) をクリックします。
  5. Project ページの Launcher セクションで、Kiali リンクをクリックします。
  6. Log In With OpenShift をクリックします。
1.22.3.1.2. Jaeger コンソールへのアクセス

Jaeger コンソールにアクセスするには、Red Hat OpenShift Service Mesh がインストールされ、Red Hat OpenShift 分散トレースプラットフォーム (Jaeger) がインストールおよび設定されている必要があります。

インストールプロセスにより、Jaeger コンソールにアクセスするためのルートが作成されます。

Jaeger コンソールの URL が分かっている場合は、これに直接アクセスできます。URL が分からない場合は、以下の指示を使用します。

重要

Red Hat OpenShift Service Mesh 2.5 以降、Red Hat OpenShift 分散トレーシングプラットフォーム (Jaeger) と OpenShift Elasticsearch Operator が非推奨になりました。これらは今後のリリースで削除される予定です。Red Hat は、現在のリリースのライフサイクル中にこの機能のバグ修正とサポートを提供しますが、この機能は今後、機能拡張を受け取らず、削除されます。Red Hat OpenShift 分散トレーシングプラットフォーム (Jaeger) の代わりに、Red Hat OpenShift 分散トレーシングプラットフォーム (Tempo) を使用できます。

OpenShift コンソールからの手順

  1. cluster-admin 権限を持つユーザーとして Red Hat OpenShift Service on AWS Web コンソールにログインします。(Red Hat OpenShift Dedicated を使用する場合) dedicated-admin ロールがあるアカウント。
  2. Networking Routes に移動します。
  3. Routes ページで、Namespace メニューから Service Mesh コントロールプレーンプロジェクトを選択します (例: istio-system)。

    Location 列には、各ルートのリンク先アドレスが表示されます。

  4. 必要な場合は、フィルターを使用して jaeger ルートを検索します。ルートの Location をクリックしてコンソールを起動します。
  5. Log In With OpenShift をクリックします。

Kiali コンソールからの手順

  1. Kiali コンソールを起動します。
  2. 左側のナビゲーションペインで Distributed Tracing をクリックします。
  3. Log In With OpenShift をクリックします。

CLI からの手順

  1. cluster-admin ロールを持つユーザーとして Red Hat OpenShift Service on AWS CLI にログインします。(Red Hat OpenShift Dedicated を使用する場合) dedicated-admin ロールがあるアカウント。

    $ oc login --username=<NAMEOFUSER> https://<HOSTNAME>:6443
  2. コマンドラインを使用してルートの詳細をクエリーするには、以下のコマンドを入力します。この例では、istio-system が Service Mesh コントロールプレーンの namespace です。

    $ oc get route -n istio-system jaeger -o jsonpath='{.spec.host}'
  3. ブラウザーを起動し、https://<JAEGER_URL> に移動します。ここで、<JAEGER_URL> は直前の手順で検出されたルートです。
  4. Red Hat OpenShift Service on AWS コンソールにアクセスするときに使用するものと同じユーザー名とパスワードを使用してログインします。
  5. Service Mesh にサービスを追加し、トレースを生成している場合は、フィルターと Find Traces ボタンを使用してトレースデータを検索します。

    コンソールインストールを検証すると、表示するトレースデータはありません。

1.22.3.2. Service Mesh コントロールプレーンのトラブルシューティング

Service Mesh コントロールプレーンのデプロイ時に問題が発生した場合は、

  • ServiceMeshControlPlane リソースがサービスおよび Operator とは別のプロジェクトにインストールされていることを確認します。このドキュメントでは istio-system プロジェクトをサンプルとして使用しますが、Operator およびサービスが含まれるプロジェクトから分離されている限り、コントロールプレーンを任意のプロジェクトにデプロイできます。
  • ServiceMeshControlPlane および Jaeger カスタムリソースが同じプロジェクトにデプロイされていることを確認します。たとえば、両方の istio-system プロジェクトを使用します。

1.22.4. データプレーンのトラブルシューティング

データプレーン は、Service Mesh 内のサービス間の受信および送信ネットワーク通信をすべて傍受し、制御するインテリジェントプロキシーのセットです。

Red Hat OpenShift Service Mesh は、アプリケーションの Pod 内のプロキシーサイドカーに依存して、アプリケーションに Service Mesh 機能を提供します。

1.22.4.1. サイドカーインジェクションのトラブルシューティング

Red Hat OpenShift Service Mesh は、プロキシーサイドカーコンテナーを Pod に自動的に挿入しません。サイドカーインジェクションをオプトインする必要があります。

1.22.4.1.1. Istio サイドカーインジェクションのトラブルシューティング

アプリケーションのデプロイメントで自動インジェクションが有効になっているかどうかを確認します。Envoy プロキシーの自動インジェクションが有効になっている場合は、spec.template.metadata.annotations の下の Deployment リソースに sidecar.istio.io/inject:"true" アノテーションがなければなりません。

1.22.4.1.2. Jaeger エージェントのサイドカーインジェクションのトラブルシューティング

アプリケーションのデプロイメントで自動インジェクションが有効になっているかどうかを確認します。Jaeger エージェントの自動インジェクションが有効な場合は、Deployment リソースに sidecar.jaegertracing.io/inject:"true" アノテーションが必要です。

サイドカーインジェクションの詳細は、自動インジェクションの有効化 を参照してください。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.