Anthos Service Mesh での正規サービスの問題の解決

注: 正規サービスは Anthos Service Mesh バージョン 1.6.8 以降で自動的にサポートされます。

このセクションでは、Anthos Service Mesh の一般的な問題とその解決方法について説明します。さらにサポートが必要な場合は、サポートの利用をご覧ください。

Kubernetes Service のない Kubernetes ワークロードは表示されない

「Kubernetes Service のない Kubernetes ワークロードは表示されません。以下に表示するためには、ワークロードごとに Kubernetes Service 作成します。」という表示がある場合、正規サービスに手動で移行する必要があります。

この問題の主な原因は次の 2 つです。

  1. メッシュ内のクラスタが古いバージョンの Anthos Service Mesh(1.6.8 未満)を実行している
  2. 定義された SLO を持つサービスが、正規サービスと 1 対 1 の対応でマッピングされていない

メッシュ内のクラスタが古いバージョンの Anthos Service Mesh を実行している

いずれかのクラスタで以前のバージョンの ASM(1.6.8 未満)が実行されている場合、正規サービスベースのダッシュボードを利用できません。正規サービスを使用するには、すべてのクラスタを Anthos Service Mesh 1.6.8 以降にアップグレードする必要があります。詳細については、クラスタが GKE 上にある場合は Anthos Service Mesh を最新バージョンにアップグレードするを、クラスタがオンプレミスにある場合はオンプレミスの Anthos Service Mesh のアップグレードを参照してください。

定義された SLO を持つサービスが、正規サービスと 1 対 1 の対応でマッピングされていない

正規サービスに移行される前、Anthos Service Mesh では Kubernetes Services のダッシュボードが表示されていました。Kubernetes Services とデフォルトの正規サービスが整合することがほとんどですが、Kubernetes Service が対応する正規サービスと自動的に一致しないことや、デフォルトの正規サービスの境界が望ましいものにならないこともあります。

既存のサービスにサービスレベル目標(SLO)を設定していて、それをデフォルトの正規サービスと自動的に対応させられない場合、それらのサービスを移行することはできません。正規サービスの使用を開始するには、問題のあるサービスの SLO を削除する必要があります。また、古い SLO を削除する前に、そのサービスに最も近い正規サービスの新しい SLO を作成することもできます。

ダッシュボードに表示されるはずのコンテンツが表示されない

サービス メッシュのサービス ダッシュボードはそれぞれ、サービス メッシュ内の正規サービスにスコープされます。正規サービスは、関連するすべてのワークロード、リージョンなどにまたがる高レベルの論理サービス コンセプトです。

デフォルトでは、各ワークロード インスタンスの既存のラベル(Pod または WorkloadEntry)が正規サービスを定義し、優先度を下げる際に次のルールに従います。

  1. service.istio.io/canonical-name ラベルはすでに明示的に設定されています。これ以上の対応は不要です。
  2. それ以外の場合は、service.istio.io/canonical-name ラベルが追加され、その値には app.kubernetes.io/name ラベルのものが設定されます。
  3. それ以外の場合は、service.istio.io/canonical-name ラベルが追加され、その値には app ラベルのものが設定されます。
  4. それ以外の場合、service.istio.io/canonical-name ラベルが追加され、その値には所有ワークロードの name が設定されます。ここでの「所有ワークロード」は、Pod、Deployment、StatefulSet などが単独でデプロイされている場合、またはより高いレベルのオーケストレーションを使用している場合です。

Kubernetes と KubeRun / Knative のほとんどの慣用的なユーザーの場合、これらのルールは、サービスとワークロードをすでに管理している方法に直接マッピングされます。

ただし、一部のカスタム ユースケースや複雑なユースケースでは、デフォルトのヒューリスティックによりサービスが適切にキャプチャされないため、表示される Anthos Service Mesh ダッシュボードに表示されるはずのコンテンツが含まれません。

この問題は、正規サービスの範囲を手動で定義することで解決できます。

サービスの範囲を手動で定義する

可能な限り、自動のデフォルト グループ化メカニズムを使用することをおすすめします。ただし、これらのデフォルト グループをオーバーライドする場合は、Kubernetes Pod と WorkloadEntry の構成に service.istio.io/canonical-name Kubernetes ラベルを適用します。

詳しくは、手動で正規サービスを定義するをご覧ください。