故障排除

Kiali server 观察多集群网格时可能会出现以下问题。集群名称和环境变量与在多集群网格中安装 Kiali中使用的相同。

远程集群报告为可访问,但其命名空间未显示在控制台中

Kiali server 日志显示以下条目:

INF Discovered cluster: Name=[cluster2], Accessible=true, IsKialiHome=false, ...
INF Error fetching Namespaces for cluster [cluster2]: Unauthorized
WRN Error checking Istio API configuration: the server has asked for the client to provide credentials

远程集群 secret 直接指向集群 API server,因此 Kiali 的 service account token 可以正常工作,但已登录用户的 platform token 会被拒绝。将 secret 中 kubeconfigserver 字段更改为 platform endpoint <platform-url>/kubernetes/<cluster-name>,并配置匹配的证书颁发机构,然后触发协调。请参阅安装操作步骤中的步骤 4

生成远程集群 secret 始终无法完成

脚本会重复显示以下消息,然后失败:

INFO: Waiting for the remote cluster SA secret token to be created...
ERROR: There is no token assigned yet to the remote cluster SA secret [kiali-service-account] found in remote cluster namespace [istio-system].

远程集群中缺少长期有效的 service account token secret。完成安装操作步骤中的步骤 3,然后再次运行脚本。

移除集群后,Kiali server pod 仍处于 ContainerCreating 状态

pod 事件报告缺少 secret:

MountVolume.SetUp failed for volume "cluster2" : secret "kiali-remote-cluster-secret-cluster2" not found

deployment 仍会挂载已删除的远程集群 secret,而协调不会移除该卷。按照从 Kiali 中移除集群的步骤 4所述重新创建 deployment。

集群可访问,但图表为空

确认所有集群的指标都带有 mesh_id 标签,因为 spec.external_services.prometheus.query_scope 会根据该标签进行筛选:

curl -sS -u "<monitoring-user>:<monitoring-password>" \
  --data-urlencode 'query=count(istio_requests_total{mesh_id="mesh1"}) by (source_cluster, destination_cluster)' \
  "<monitoring-address>/api/v1/query"

结果必须为每个交换流量的集群对包含一个序列。如果缺少某个集群,则其指标可能从未到达存储区,或者不带匹配的 mesh_id 标签:请检查该集群是否具有 ServiceMonitorPodMonitor 对象,以及对其进行配置的控制平面是否具有 Telemetry 资源,且该资源的 mesh_id 标签覆盖是否与 Istio 资源的 meshID 匹配。请参阅使用 Service Mesh 配置监控