解决多集群问题
本部分介绍常见的 Cloud Service Mesh 问题以及如何解决这些问题。如果您需要其他帮助,请参阅获取支持。
缺少 Secret
本部分仅适用于集群内控制平面和代管式 具有 Istiod 实现的控制平面。
Cloud Service Mesh 依赖于嵌入在 Kubernetes Secret 中的 kubeconfig 文件进行适当的远程端点发现。如果没有这些 Secret, 在跨集群加载期间始终看到请求命中本地集群中的 Pod 负载均衡
在每个集群中运行以下命令,以验证 Secret 是否已创建:
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 服务器
本部分仅适用于集群内控制平面和托管(istiod 实现)。
Cloud Service Mesh 的控制平面需要访问远程集群的 API 服务器。以下情况可能导致远程集群变得无法访问:
如果无法访问 API 服务器,Istiod 将在日志中输出错误消息。在跨集群负载均衡期间,用户始终会看到请求命中本地 pod。
在日志浏览器界面中,将查询 resource.type
设置为 istio_control_plane
。
检查是否存在任何无效的密钥错误。
如需从此问题中恢复,请修复底层 API 服务器
可达性问题接下来,删除每个集群中的所有远程 Secret,然后重新运行 create-mesh
命令。
缺少防火墙规则
如果没有适当的防火墙规则,则在进行跨集群负载均衡时,用户将遇到 10 秒的延迟,接着超时。
如需恢复该规则,请按照创建防火墙规则中所述的步骤操作。