Istio virtual service 入口流量管理 故障注入之延时(fixedDelay)、中断(abort)

Istio 故障注入


Istio 故障注入与其他在网络层引入错误(例如延迟数据包或者直接杀死 Pod)的机制不同,Istio 允许在应用程序层注入故障。这使得可以注入更多相关的故障,比如 HTTP 错误代码等。

Istio 可以注入两种类型的故障,而这两种故障都是使用虚拟服务来配置的:

延迟:模拟增加网络延迟或上游服务过载。

中止:模拟服务故障而导致调用服务不可用。中止通常以 HTTP 错误代码或 TCP 连接失败表示

故障注入


尽可能去模拟出可能会出现问题,用于模拟问题

  1. 延迟故障
  2. 中断故障 模拟服务器出现问题

控制时间也就是等多少秒然后再往svc去转发,其实也就是暂停一下,这叫做延时注入。

凡是往svc1走的时候,都给你延迟一下fixedDelay,percent意思为百分比,就是客户端来流量的时候,是不是所有的客户端经过这个vs的时候都做延迟一下,还是按照比例去做。

故障注入是一种软件测试方式,通过在代码中引入故障来发现系统隐藏的bug,并可以与压测一起验证软件的稳健性。

目前istio仅针对http协议支持两种方式:延迟故障和中断故障,所有故障相关配置在 Virtual services CRD对象内。

延迟故障

  • 场景1 为服务A设置5秒延迟,期望100%请求都是 5秒后返回数据
## 配置示例
http:
  - fault:
      delay:
        percentage:
          value: 100.0
        fixedDelay: 5s
  • 场景2 为服务A设置5秒延迟,期望50%的请求都是5秒后返回数据
## 配置示例
http:
  - fault:
      delay:
        percentage:
          value: 50.0
        fixedDelay: 5s


[root@k8s-master vs]# cat vsinjectdelay.yaml 
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: myvs
  namespace: istio
spec:
  hosts:
  - "cc.rhce.cc"
  gateways:
  - mygateway
  http:
  - fault:
      delay:
        percentage:
          value: 100.0
        fixedDelay: 1s 
    route:
     - destination:
         host: svc1
         port:
           number: 80

中断故障

中断故障注入是用来模拟服务器出问题的情况下,当客户端连接过来的时候,可能后端服务出问题了,比如pod1出现问题了。

[root@k8s-master vs]# cat vsinject.yaml 
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: myvs
  namespace: istio
spec:
  hosts:
  - "cc.rhce.cc"
  gateways:
  - mygateway
  http:
  - fault:
      abort:
        percentage:
          value: 100
        httpStatus: 503
  
    route:
     - destination:
         host: svc1
         port:
           number: 80


[root@k8s-master vs]# curl -I http://cc.rhce.cc:30744/
HTTP/1.1 503 Service Unavailable
content-length: 18
content-type: text/plain
date: Thu, 01 Jun 2023 12:00:19 GMT
server: istio-envoy

这些返回的错误代码是你自己就可以去定义的。上面就是尽可能的去故障还原,将问题还原出来,模拟出来,再次去解决问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值