我们正在使用 Istio 1.8.1 并已开始使用无头服务来获得使用 Istio mTLS 的直接 pod 到 pod 通信。这一切都很好,但我们最近注意到,有时在杀死我们的一个 pod 后,我们会在很长一段时间内(很多分钟)得到 503 没有健康的上游错误。如果我们回到“正常”服务,我们会收到一些 503 错误,然后问题很快得到解决(但我们无法将请求定向到我们需要做的特定 pod)。
我们使用 kubectl sniff 跟踪了 envoy 容器的通信,可以看到在 pod 被杀死后,现有连接会保持很长一段时间,甚至还会尝试与之前杀死的 pod IP 建立新连接。
我们对相关服务的目标规则进行了断路器配置,但这似乎也没有帮助。我们还尝试设置“PILOT_ENABLE_EDS_FOR_HEADLESS_SERVICES”,这似乎改善了 503 错误情况,但奇怪的是干扰了 pod 到 pod 的直接 IP 配置。
有人对我们收到 503 错误的原因或如何避免它们有任何建议吗?