Envoy Proxy 启动故障排除

Envoy 代理,在您的工作负载容器组中作为侧车使用时也称为 istio-proxy,会拦截您容器组内服务网格中的所有入站和出站流量。

当容器组无法启动或流量无法按预期工作时,请使用以下工具和技术进行故障排除:

PostStarHookError

如果您遇到 PostStarHookError 错误,并且容器组的错误信息表明类似以下内容:

Error: timeout waiting for Envoy proxy to become ready.

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

侧车的 CPU 或内存限制不足

当:

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

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

解决方案: 增加侧车的 CPU 和内存限制。

防火墙

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

如果您在 istio-proxy 日志中发现“无法连接到 istiod”的消息,请检查您平台上的防火墙配置,并联系平台管理员以允许工作负载流量访问 istio-system 命名空间:

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

  • (通用)NetworkPolicy
  • (Calico)NetworkPolicyGlobalNetworkPolicyprojectcalico.org/v3
  • (Cilium/KubeOVN)CiliumNetworkPolicy

但是在少数情况下(例如,华为云 CCE 和 Ubuntu 22.04),由于 CCE VPC CNI 引起的错误,您无法使用 istio-init initContainer 来拦截网络流量。在这种情况下,请使用 Istio CNI 配置拦截。

有问题的 WASM / EnvoyFilter 插件

WASM 和 EnvoyFilters 是 Istio 中强大但潜在破坏性的功能。

配置不正确的 WASM 或 EnvoyFilter 插件可能会导致服务网格中的不可预测行为。 因此,当 Istio 侧车在启动时似乎停滞不前时,请首先检查可疑的 EnvoyFilters。

或者,如果为特定工作负载或全局安装了 WASM 插件,请将其卸载,以验证之后 Istio 代理是否正常工作。