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,GlobalNetworkPolicy,位于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 是否按预期工作。