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)NetworkPolicyGlobalNetworkPolicy,位于 projectcalico.org/v3
  • (Cilium/KubeOVN)CiliumNetworkPolicy

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

有问题的 WASM / EnvoyFilter 插件

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

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

或者,如果为特定工作负载或全局安装了 WASM 插件,卸载它以验证之后 Istio proxy 是否按预期工作。