9.2 给服务增加时延

上一章

9.4 时延与错误配合使用

下一章

更多图书

9.3 给服务注入错误

给服务注入错误,模拟后端服务出现故障,服务调用失败。

使用示例如下:


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       abort:
29         percent: 50
30         httpStatus: 500

第27~30行定义了服务故障注入规则,abort表示给服务注入故障,percent表示出错的百分比,默认值为0,httpStatus指定返回的错误响应码。代码中定义的故障注入规则表示,在所有调用service-go服务v1版本的请求中,抽取50%的请求注入出错响应码为500。

【实验】

1)创建基础路由规则,创建Gateway应用访问入口,service-js服务路由规则:


$ kubectl apply -f istio/route/gateway-js-v1.yaml

2)创建service-go服务的错误故障注入规则:


$ kubectl apply -f istio/fault/virtual-service-go-abort.yaml

3)浏览器访问。

浏览器访问地址为http://11.11.11.111:31380/ ,多次点击“发射”按钮,查看服务调用情况,可以看到,有部分请求出现调用service-go服务无法成功的现象,如图9-2所示。

图9-2 给服务注入错误的结果

4)清理:


$ kubectl delete -f istio/route/gateway-js-v1.yaml
$ kubectl delete -f istio/fault/virtual-service-go-abort.yaml