如何通过EnvoyFilter覆盖Istio默认重试退避间隔?
尝试通过EnvoyFilter覆盖Istio默认重试退避间隔失败
我拥有三个依次调用后继服务的服务,其中Service-2已通过VirtualService启用重试,配置如下:
apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: labels: app: service-2 name: service-2-vs namespace: retry-test spec: hosts: - service-2 http: - route: - destination: host: service-2 retries: attempts: 5 retryOn: 5xx
重试功能正常工作,但当我应用EnvoyFilter以覆盖默认重试退避间隔时,却看不到任何效果。我使用的EnvoyFilter配置如下:
apiVersion: networking.istio.io/v1alpha3 kind: EnvoyFilter metadata: name: service-2-envoy-config namespace: retry-test spec: workloadSelector: labels: app: service-2 configPatches: - applyTo: HTTP_ROUTE match: context: SIDECAR_OUTBOUND routeConfiguration: vhost: name: "service-2.retry-test.svc.cluster.local:5002" patch: operation: MERGE value: route: retry_policy: retry_back_off: base_interval: "1s" max_interval: "5s"
我也曾尝试为Service-1(向Service-2发送请求的服务)配置EnvoyFilter,但同样没有效果。
通过Kiali检查时,我看到EnvoyFilter已应用到正确的服务;查看工作负载的Envoy配置时,也能看到以下内容已被应用:
"route": { "cluster": "outbound|5002||service-2.retry-test.svc.cluster.local", "max_grpc_timeout": "0s", "retry_policy": { "host_selection_retry_max_attempts": "5", "num_retries": 5, "retry_back_off": { "base_interval": "1s", "max_interval": "5s" }, ... } }
有人能帮我找出如何应用正确的EnvoyFilter来覆盖默认退避间隔吗?
内容的提问来源于stack exchange,提问作者V3RO
相关产品推荐
相关产品推荐

