マルチクラスタの問題の解決
このセクションでは、Cloud Service Mesh の一般的な問題とその解決方法について説明します。さらにサポートが必要な場合は、サポートの利用をご覧ください。
Secret がない
Cloud Service Mesh は、リモート エンドポイントを適切に検出するために、Kubernetes Secret に埋め込まれた kubeconfig ファイルを使用します。Secret がない場合、クラスタ間のロード バランシングでローカル クラスタの Pod にリクエストが常に表示されます。
すべてのクラスタで次のコマンドを実行して、シークレットが作成されたことを確認します。
kubectl get secret istio-remote-secret-CLUSTER_NAME_i -n istio-system
次のような出力が表示されることを確認します。
NAME TYPE DATA AGE
istio-remote-secret-CLUSTER_NAME_i Opaque 1 44s
これを回復するには、すべてのリモート Secret を削除し、create-mesh
コマンドを再実行します。
API サーバーにアクセスできない
Cloud Service Mesh のコントロール プレーンは、リモート クラスタの API サーバーにアクセスする必要があります。次の状況では、リモート クラスタが到達不能になる可能性があります。
- リモート クラスタが削除されている。
- リモート クラスタが、グローバル アクセスが有効になっていない限定公開クラスタである。
- リモート クラスタが、マスター承認済みネットワークが有効になっている限定公開クラスタであるものの、Cloud Service Mesh のコントロール プレーンの IP が許可リストで適切に許可されていない。
API サーバーにアクセスできない場合、Istiod はログにエラー メッセージを出力します。クラスタ間のロード バランシングで、リクエストが常にローカル Pod に表示されます。
[ログ エクスプローラ] インターフェースで、クエリ resource.type
を istio_control_plane
に設定します。
無効な Secret がないか確認してください。
上記の状況から回復するには、まず、原因となっている API サーバーの到達可能性の問題を修正します。次に、すべてのクラスタのリモート Secret をすべて削除して、create-mesh
コマンドを再実行します。
ファイアウォール ルールがない
適切なファイアウォール ルールがないと、クラスタ間でロード バランシングが行われる際にタイムアウトにより 10 秒の遅延が発生します。
この状況から回復するには、ファイアウォール ルールを作成するで説明されている手順を行います。