9.1 整体介绍

上一章

9.3 给服务注入错误

下一章

更多图书

9.2 给服务增加时延

给服务调用增加时延,模拟网络出现故障或者服务过载时响应变慢的情况。

使用示例如下:


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