我正在检查documentation for the DestinationRule,其中有几个断路配置的例子,例如:
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: bookinfo-app
spec:
host: bookinfoappsvc.prod.svc.cluster.local
trafficPolicy:
connectionPool:
tcp:
connectTimeout: 30ms
...
connectionPool.tcp元素提供connectTimeout。但是我需要配置的是最大响应超时。想象一下,如果服务的响应时间超过5秒,我想打开电路。可以在Istio中配置吗?怎么样?
看看Tasks --> Traffic Management --> Setting Request Timeouts:
可以使用route rule的超时字段指定http请求的超时。默认情况下,超时为15秒[...]
因此,您必须在http.timeout
配置中设置VirtualService
。看一下Virtual Service / Destination官方文档中的这个例子:
对于Kubernetes中对productpage.prod.svc.cluster.local服务的所有调用,以下VirtualService设置超时5秒。
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: my-productpage-rule
namespace: istio-system
spec:
hosts:
- productpage.prod.svc.cluster.local # ignores rule namespace
http:
- timeout: 5s
route:
- destination:
host: productpage.prod.svc.cluster.local
http.timeout: HTTP请求超时。