Envoy Proxy 启动故障排查
Envoy proxy,也称为在工作负载 Pod 中作为 sidecar 使用时的 istio-proxy,拦截服务网格中 Pod 内的所有入站和出站流量。
当 Pod 启动失败或流量未按预期工作时,使用以下工具和方法进行故障排查:
目录
PostStarHookError
如果遇到 PostStarHookError 错误,且 Pod 的错误信息类似于:
这意味着代理无法在指定时间(30s)内变为就绪。此错误的常见原因如下:
Sidecar CPU 或内存限制不足
当:
- 主机负载较高
- CPU 频率不足
- 服务网格中服务过多
- 等等
时,sidecar 无法在合理时间(30s)内处理来自 istiod 的 xDS 配置。
操作建议: 增加 sidecar 的 CPU 和内存限制。
防火墙
服务网格要求 sidecar 流量能够访问 istio-system 命名空间中的服务。
如果在 istio-proxy 日志中发现“cannot connect to istiod”之类的信息,请检查平台上的防火墙配置,并联系平台管理员允许工作负载流量访问 istio-system 命名空间:
具体配置取决于平台使用的 CNI:
- (通用)
NetworkPolicy - (Calico)
NetworkPolicy,projectcalico.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 是否能正常工作。