当我添加此VirtualService时,故障注入正在工作,并且出现502错误。但是,在引入重试之后,系统中的错误率并没有降低,我仍然收到50%的错误。
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: api-broker-timeout
namespace: four
spec:
hosts:
- api-broker-svc
http:
- retries:
attempts: 10
perTryTimeout: 50mss
retryOn: gateway-error,5xx,retriable-4xx
fault:
delay:
percent: 100
fixedDelay: 0.4s
abort:
httpStatus: 502
percent: 50
route:
- destination:
host: api-broker-svc
答案 0 :(得分:1)
我已经搜索了documentation
我认为retries
应该嵌套在route
之后
就像上述文档的示例中给出的一样:
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: ratings
spec:
hosts:
- ratings
http:
- route:
- destination:
host: ratings
subset: v1
retries:
attempts: 3
perTryTimeout: 2s
因此您需要使它看起来像这样:
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: api-broker-timeout
namespace: four
spec:
hosts:
- api-broker-svc
http:
- fault:
delay:
percent: 100
fixedDelay: 0.4s
abort:
httpStatus: 502
percent: 50
route:
- destination:
host: api-broker-svc
retries:
attempts: 10
perTryTimeout: 50mss
retryOn: gateway-error,5xx,retriable-4xx
我没有亲自测试它,因为需要更多细节来重现这种情况。
希望对您有帮助。
答案 1 :(得分:1)
根据VirtualService规范文档,故障注入和重试不能同时使用。
参考:https://istio.io/latest/docs/reference/config/networking/virtual-service/#HTTPRoute
要在客户端的HTTP流量上应用的故障注入策略。请注意,如果在客户端启用了错误,则不会启用超时或重试。
编辑:
下,这将作为将来的增强功能进行跟踪