我是领事新手,但我做了很多研究,但仍然无法弄清楚为什么我的重试失败。超时也是如此。我在 ServiceRouter 中配置了所有这些,并使用 kubectl 端口转发连接到后端。我希望重试能够应用,但无论出于何种原因,即使我的后端需要 65 秒来响应,我的配置也不会触发。 这是我设置重试的方式
apiVersion: consul.hashicorp.com/v1alpha1
kind: ServiceRouter
metadata:
name: backend-router
namespace: consul-hofladen
spec:
routes:
- match:
destination:
service: backend
numRetries: 5
retryOnConnectFailure: true
retryOn: ["5xx","gateway-error","connect-failure","refused-stream"]
requestTimeout: 2s
我的后端响应概率为 50/50,为 503 或 200。为什么我的重试没有触发?在 Istio 中做同样的事情是没有问题的。
我发现了我的错误。问题在于对如何以及何时应用这些政策的理解错误。要真正让所有这些配置发挥作用,您必须在集群内部工作。
这意味着使用 kubectl exec -it 访问容器,然后向应用配置的容器发送curl 请求。这样重试,我的所有其他问题都得到了解决。
您无法使用 Postman 发送请求并期望它能够工作。它不是。最终这是有道理的,因为服务网格主要负责集群内部的流量。