逐步排查 Anthos Service Mesh 问题

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

问题排查步骤

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

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

安装期间出现 kpt 错误

使用不支持的 kpt 版本通过 install_asm 安装 Anthos Service Mesh 时,install_asm 会输出以下错误消息:

    2021-07-14T15:54:58.380312 install_asm_1_9_3: Downloading ASM..
      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                     Dload  Upload   Total   Spent    Left  Speed
    100 41.7M  100 41.7M    0     0  31.1M      0  0:00:01  0:00:01 --:--:-- 31.1M
    2021-07-14T15:54:59.777425 install_asm_1_9_3: Downloading ASM kpt package...
    2021-07-14T15:54:59.805267 install_asm_1_9_3: Running: '/usr/bin/kpt pkg get --auto-set=false https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm@release-1.9-asm asm'
    2021-07-14T15:54:59.832100 install_asm_1_9_3: -------------
    error: unknown flag: --auto-set
    2021-07-14T15:54:59.907493 install_asm_1_9_3: [WARNING]: Failed, retrying...(1 of 3)
    2021-07-14T15:55:01.936275 install_asm_1_9_3: Running: '/usr/bin/kpt pkg get --auto-set=false https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm@release-1.9-asm asm'
    2021-07-14T15:55:01.963543 install_asm_1_9_3: -------------
    error: unknown flag: --auto-set
    2021-07-14T15:55:02.043638 install_asm_1_9_3: [WARNING]: Failed, retrying...(2 of 3)
    2021-07-14T15:55:04.074541 install_asm_1_9_3: Running: '/usr/bin/kpt pkg get --auto-set=false https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm@release-1.9-asm asm'
    2021-07-14T15:55:04.101990 install_asm_1_9_3: -------------
    error: unknown flag: --auto-set
    2021-07-14T15:55:04.176750 install_asm_1_9_3: [WARNING]: Failed, retrying...(3 of 3)
    

如果您看到这些错误,请下载最新版本的 install_asminstall_asm 脚本必须是以下版本之一或更高版本:

  • 对于 1.8 版 - 1.8.6-asm.5+config1
  • 对于 1.9 版 - 1.9.6-asm.2+config1
  • 对于 1.10 版 - 1.10.2-asm.3+config1

如果您下载 anthos-service-mesh-package 以使用 istioctl install 安装 Anthos Service Mesh,如果您使用不受支持的 kpt 版本,则会看到以下错误消息:

    Package "asm":
    Fetching https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages@release-1.10-asm
    From https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages
     * branch            release-1.10-asm -> FETCH_HEAD
    Error: Kptfile at "https:/github.com/GoogleCloudPlatform/anthos-service-mesh-packages/asm@release-1.10-asm" has an old version ("v1alpha1") of the Kptfile schema.
    Please update the package to the latest format by following https://kpt.dev/installation/migration.
    

安装 Anthos Service Mesh 需要使用 1.x 之前版本的 kpt。您必须将 shell 会话设置为使用 kpt 版本 0.39.2。您可以运行以下命令来获取 kpt 版本:

   kpt version

输出类似于以下内容:

    0.39.2

如果您看到的 kpt 版本高于 1.0,请参阅设置环境以下载您的操作系统所需的版本。

使用自动验证工具

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 日志