Envoy Proxy 启动故障排查

Envoy proxy,也称为在工作负载 Pod 中作为 sidecar 使用时的 istio-proxy,拦截服务网格中 Pod 内的所有入站和出站流量。

当 Pod 启动失败或流量未按预期工作时,使用以下工具和方法进行故障排查:

目录

PostStarHookError

如果遇到 PostStarHookError 错误,且 Pod 的错误信息类似于:

Error: timeout waiting for Envoy proxy to become ready.

这意味着代理无法在指定时间(30s)内变为就绪。此错误的常见原因如下:

Sidecar CPU 或内存限制不足

当:

  • 主机负载较高
  • CPU 频率不足
  • 服务网格中服务过多
  • 等等

时,sidecar 无法在合理时间(30s)内处理来自 istiod 的 xDS 配置。

操作建议: 增加 sidecar 的 CPU 和内存限制。

防火墙

服务网格要求 sidecar 流量能够访问 istio-system 命名空间中的服务。

如果在 istio-proxy 日志中发现“cannot connect to istiod”之类的信息,请检查平台上的防火墙配置,并联系平台管理员允许工作负载流量访问 istio-system 命名空间:

具体配置取决于平台使用的 CNI:

  • (通用)NetworkPolicy
  • (Calico)NetworkPolicyprojectcalico.org/v3 中的 GlobalNetworkPolicy
  • (Cilium/KubeOVN)CiliumNetworkPolicy

但在极少数情况下(例如 HuaweiCloud CCE 和 Ubuntu 22.04),由于 CCE VPC CNI 的一个 Bug,无法使用 istio-init initContainer 拦截网络流量。此时,请使用 Istio CNI 来配置流量拦截。

有问题的 WASM / EnvoyFilter 插件

WASM 和 EnvoyFilter 是 Istio 中强大但可能带来破坏性的功能。

配置错误的 WASM 或 EnvoyFilter 插件可能导致服务网格行为不可预测。 因此,当 Istio sidecar 启动时出现卡顿,首先检查是否有可疑的 EnvoyFilter。

或者,如果为特定工作负载或全局安装了 WASM 插件,卸载它以验证 Istio proxy 是否能正常工作。