索引总目录:istio从入门到放弃系列

1、介绍

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

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

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

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

2、故障延迟

2.1 客户端资源

apiVersion: apps/v1
kind: Deployment
metadata:
  name: client
spec:
  replicas: 1
  selector:
    matchLabels:
      app: client
  template:
    metadata:
      labels:
        app: client
    spec:
      containers:
      - name: busybox
        image: busybox
        imagePullPolicy: IfNotPresent
        command: [ "/bin/sh", "-c", "sleep 3600" ]

部署并使用istio注入,最终得到以下

image-20200529112054698.png

2.2 服务端资源

apiVersion: v1
kind: Service
metadata:
  name: nginx-svc
spec:
  selector:
    server: nginx
  ports:
  - name: http
    port: 80
    targetPort: 80
    protocol: TCP
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
  labels:
    server: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      server: nginx
  template:
    metadata:
      labels:
        server: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        imagePullPolicy: IfNotPresent

2.3 虚拟服务

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: test-vs
spec:
  hosts:
  - nginx-svc
  http:
  - fault:
      delay:
        percentage:
          value: 100
        fixedDelay: 10s
    route:
    - destination:
        host: nginx-svc

3、验证故障注入

进入客户端容器中,访问nginx服务

kubectl exec -it client-8496866cdf-vkmcw /bin/sh

wget -q -O - http://nginx-svc

Istio 故障注入_第1张图片

可以看出时间延迟在十多秒,加上操作时间,和上面设置的时间是吻合的。

4、故障中止

修改虚拟服务文件

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: test-vs
spec:
  hosts:
  - nginx-svc
  http:
  - fault:
      abort:
        percentage:
          value: 100
        httpStatus: 503
    route:
    - destination:
        host: nginx-svc

5、再次进入客户端验证

kubectl exec -it client-8496866cdf-vkmcw /bin/sh

wget -q -O - http://nginx-svc

image-20200529114513795.png

参考文章:https://blog.51cto.com/14625168/2496878

                 https://blog.51cto.com/14625168/2496940