逐步排查 Anthos Service Mesh 问题

本部分介绍如何排查和解决使用 Anthos Service Mesh 时遇到的问题。如果您需要其他帮助,请参阅获取支持

问题排查步骤

按照以下常规步骤操作,以最高效地进行 Anthos Service Mesh 问题排查:

  1. 使用自动配置验证工具。
  2. 检查遇到的常见问题是否存在已知的解决方案。
  3. 缩小问题的范围。
  4. 查看相关日志和信息。
  5. 收集诊断日志并寻求帮助。

使用自动验证工具

Anthos Service Mesh 包括自动诊断和配置验证工具,这些工具可帮助您解决问题并避免再遇到这些问题。下面几个部分将介绍如何使用这些工具。

istioctl analyze

istioctl analyze 诊断工具可以检测常见的配置问题。按照这些instructions安装 istioctl

istioctl analyze 会读取集群配置;如果发现问题,则提供信息性消息并提出补救建议。它适用于活跃集群或一组本地配置文件,也可用于这两者的组合,帮助您在将更改应用到集群之前发现问题。如需了解详情,请参阅使用 istioctl analyze 诊断配置。如需详细了解 istioctl analyze 检测到的错误,请参阅配置分析消息

分析活跃集群

使用以下命令分析活跃集群。

istioctl analyze -A

如果 istioctl analyze 检测到您的配置存在问题,则会显示一条消息,提供有用的信息来帮助您解决问题(如果已知)。例如,如果您在启用 Istio Sidecar 注入时未正确标记命名空间,则该工具会产生以下消息:

Warn [IST0102] (Namespace default) The namespace is not enabled for Istio injection.
Run 'kubectl label namespace default istio-injection=enabled' to enable it,
or 'kubectl label namespace default istio-injection=disabled'
to explicitly mark it as not needing injection

如果问题仍然存在,请参阅下一部分以检查您的问题是否为已知问题。

检查常见问题和解决方案

您可以在以下常见问题和解决方案部分中检查是否有您遇到的问题(按 Anthos Service Mesh 功能分组),以便节省时间:

如果没有解决您的问题,请参阅下一部分。

缩小问题的范围

Anthos Service Mesh 包含多种技术,这意味着某些类型的问题与特定功能或组件相关。每个组件都会生成各自有用的日志。在尝试手动分析其提供的信息之前,请先回答以下问题来缩小问题排查的范围:

  • 问题发生在控制平面还是数据平面(例如 Istiod 或 Envoy 代理)?
  • 问题与哪个功能(例如网络、遥测、安全等)相关?
  • 是否存在服务网格流量丢失,或特定部署中的流量丢失?
  • 问题是否因无法扩缩服务网格中的流量而出现或更加严重?
  • 问题是否会导致延迟或其他性能问题?
  • 您能否根据需要重现该问题?
  • 问题是否在 Istio 和 GKE 进行配置变更后出现?
  • 服务网格内的流量是否增长或出现高峰?
  • 此集群是否启用了任何显著功能或拥有非典型部署?
  • 您是否观察到 CPU 利用率或内存利用率较高的情况?如果是,预期利用率是多少?
  • 是否存在配额限制?

查看控制平面状态

以下命令可帮助您了解 Anthos Service Mesh 控制平面的状态:

  • kubectl get pods -n istio-system
  • kubectl describe -n istio-system
  • 针对 istio-system 中的所有 pod:kubectl logs -n istio-system -l istio --all-containers
  • istioctl version
  • istioctl proxy-status
  • kubectl get configmap istio -o yaml && kubectl get configmap istio-sidecar-injector -o yaml
  • kubectl top pods -n istio-system

使用以下命令可了解部署的规模:

  • kubectl get nodes
  • kubectl get services --all-namespaces
  • kubectl get pods --all-namespaces

查看相关日志和信息

缩小问题范围后,您可以更高效地分析某些日志和信息。如需了解 Anthos Service Mesh 生成的日志以及如何解读其中包含的信息,请参阅解读 Anthos Service Mesh 日志

收集诊断日志并寻求帮助

如果其他问题排查步骤失败,您可以收集诊断日志并寻求其他帮助。使用此脚本将集群的所有 Kubernetes 和 Istio 资源/日志写入 istio-dump 文件夹。参阅获取支持中所述与支持团队联系时,请准备好此文件夹。