本部分介绍如何排查和解决使用 Anthos Service Mesh 时遇到的问题。如果您需要其他帮助,请参阅获取支持。
问题排查步骤
按照以下常规步骤操作,以最高效地进行 Anthos Service Mesh 问题排查:
- 使用自动配置验证工具。
- 检查遇到的常见问题是否存在已知的解决方案。
- 缩小问题的范围。
- 查看相关日志和信息。
- 收集诊断日志并寻求帮助。
安装期间出现 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_asm
。install_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,请参阅下载所需的 kpt
版本以下载所需的版本。
使用自动验证工具
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 日志。