> Istio 故障注入与其他在网络层引入错误(例如延迟数据包或者直接杀死 Pod)的机制不同,Istio 允许在应用程序层注入故障。这使得可以注入更多相关的故障,比如 HTTP 错误代码等。
#### 注入故障类型
Istio 可以注入两种类型的故障,而这两种故障都是使用虚拟服务来配置的:
1. 使用故障注入时,不能启用超时和重试
2. 通过delay和abort两个字段设置延时和中止两种故障
#### 通过例子来理解
##### 延迟故障注入
描述请求延时,模拟网络、远端服务负载均衡等各种原因导致的失败
fixedDelay:一个必选字段,表示延迟时间,单位可以是毫秒、秒、分钟和小时,至少大于1毫秒
percent:表示延迟故障作用在多少的比例的请求上,通过配置只让部分请求发生故障
```yaml
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: httpd-vs
spec:
hosts:
- httpd-service
http:
- fault:
delay:
fixedDelay: 2s
percent: 100
route:
- destination:
host: httpd-service
```
##### 中止故障注入
描述中止故障,模拟服务端异常,给调用的客户端返回预先定义的错误状态码
httpstatus:一个必选字段,表示中止的HTTP状态码
percent:表示延迟故障作用在多少的比例的请求上,通过配置只让部分请求发生故障
apiVersion networking.istio.io/v1alpha3 kind VirtualService metadata name httpd-vs spec hosts httpd-service httpfault abort httpstatus500 percent100 routedestination host httpd-service