给服务调用增加时延,模拟网络出现故障或者服务过载时响应变慢的情况。
使用示例如下:
1 apiVersion: networking.istio.io/v1alpha3 2 kind: DestinationRule 3 metadata: 4 name: service-go 5 spec: 6 host: service-go 7 subsets: 8 - name: v1 9 labels: 10 version: v1 11 - name: v2 12 labels: 13 version: v2 14 --- 15 apiVersion: networking.istio.io/v1alpha3 16 kind: VirtualService 17 metadata: 18 name: service-go 19 spec: 20 hosts: 21 - service-go 22 http: 23 - route: 24 - destination: 25 host: service-go 26 subset: v1 27 fault: 28 delay: 29 percent: 30 30 fixedDelay: 5s
第27~30行定义了服务故障注入规则,delay表示给要路由的服务注入时延,percent表示请求注入时延的比例,默认值为0;fixedDelay表示注入时延的时间。代码中定义的故障注入表明,要在调用service-go服务v1版本的所有请求中随机抽取30%的请求注入5秒的时延。故障注入规则是跟路由规则一起配置的,可以根据路由规则指定多个故障注入规则。
【实验】
1)创建基础路由规则,创建Gateway应用访问入口,service-js服务路由规则:
$ kubectl apply -f istio/route/gateway-js-v1.yaml
2)创建service-go服务的时延故障注入规则:
$ kubectl apply -f istio/fault/virtual-service-go-delay.yaml
3)浏览器访问。
浏览器访问地址为http://11.11.11.111:31380/ ,多次点击“发射”按钮,查看服务调用耗时,可以看到有部分请求出现5秒左右的调用时延,如图9-1所示。
图9-1 给服务增加时延的结果
4)清理:
$ kubectl delete -f istio/route/gateway-js-v1.yaml $ kubectl delete -f istio/fault/virtual-service-go-delay.yaml