注: 正規サービスは Anthos Service Mesh バージョン 1.6.8 以降で自動的にサポートされます。
このセクションでは、Anthos Service Mesh の一般的な問題とその解決方法について説明します。さらにサポートが必要な場合は、サポートの利用をご覧ください。
Kubernetes Service のない Kubernetes ワークロードは表示されない
「Kubernetes Service のない Kubernetes ワークロードは表示されません。以下に表示するためには、ワークロードごとに Kubernetes Service 作成します。」という表示がある場合、正規サービスに手動で移行する必要があります。
この問題の主な原因は次の 2 つです。
- メッシュ内のクラスタが古いバージョンの Anthos Service Mesh(1.6.8 未満)を実行している
- 定義された 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)が正規サービスを定義し、優先度を下げる際に次のルールに従います。
service.istio.io/canonical-name
ラベルはすでに明示的に設定されています。これ以上の対応は不要です。- それ以外の場合は、
service.istio.io/canonical-name
ラベルが追加され、その値にはapp.kubernetes.io/name
ラベルのものが設定されます。 - それ以外の場合は、
service.istio.io/canonical-name
ラベルが追加され、その値にはapp
ラベルのものが設定されます。 - それ以外の場合、
service.istio.io/canonical-name
ラベルが追加され、その値には所有ワークロードのname
が設定されます。ここでの「所有ワークロード」は、Pod、Deployment、StatefulSet などが単独でデプロイされている場合、またはより高いレベルのオーケストレーションを使用している場合です。
Kubernetes と KubeRun / Knative のほとんどの慣用的なユーザーの場合、これらのルールは、サービスとワークロードをすでに管理している方法に直接マッピングされます。
ただし、一部のカスタム ユースケースや複雑なユースケースでは、デフォルトのヒューリスティックによりサービスが適切にキャプチャされないため、表示される Anthos Service Mesh ダッシュボードに表示されるはずのコンテンツが含まれません。
この問題は、正規サービスの範囲を手動で定義することで解決できます。
サービスの範囲を手動で定義する
可能な限り、自動のデフォルト グループ化メカニズムを使用することをおすすめします。ただし、これらのデフォルト グループをオーバーライドする場合は、Kubernetes Pod と WorkloadEntry の構成に service.istio.io/canonical-name
Kubernetes ラベルを適用します。
詳しくは、手動で正規サービスを定義するをご覧ください。