故障注入

1、创建故障注入规则以延迟来自用户”jason“的流量

kubectl apply -f samples/bookinfo/networking/virtual-service-ratings-test-delay.yaml
Warning: kubectl apply should be used on resource created by either kubectl create --save-config or kubectl apply
virtualservice.networking.istio.io/ratings configured

2、确认已创建的规则

kubectl get virtualservice ratings -o yaml
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"networking.istio.io/v1alpha3","kind":"VirtualService","metadata":{"annotations":{},"name":"ratings","namespace":"default"},"spec":{"hosts":["ratings"],"http":[{"fault":{"delay":{"fixedDelay":"7s","percent":100}},"match":[{"headers":{"end-user":{"exact":"jason"}}}],"route":[{"destination":{"host":"ratings","subset":"v1"}}]},{"route":[{"destination":{"host":"ratings","subset":"v1"}}]}]}}
  creationTimestamp: 2018-09-15T07:54:24Z
  generation: 1
  name: ratings
  namespace: default
  resourceVersion: "10740"
  selfLink: /apis/networking.istio.io/v1alpha3/namespaces/default/virtualservices/ratings
  uid: 9010a0aa-b8bc-11e8-9687-00505682183d
spec:
  hosts:
  - ratings
  http:
  - fault:
      delay:
        fixedDelay: 7s
        percent: 100
    match:
    - headers:
        end-user:
          exact: jason
    route:
    - destination:
        host: ratings
        subset: v1
  - route:
    - destination:
        host: ratings
        subset: v1

3、打开网页并使用jason登录,大约7秒后

故障注入

理解原理

你发现了一个 bug。在微服务中有硬编码超时,导致 reviews 服务失败。

在 productpage 和 reviews 服务之间超时时间是 6s - 编码 3s + 1 次重试总共 6s ,reviews 和 ratings 服务之间的硬编码连接超时为 10s 。由于我们引入的延时,/productpage 提前超时并引发错误。

这些类型的错误可能发生在典型的企业应用程序中,其中不同的团队独立地开发不同的微服务。Istio 的故障注入规则可帮助您识别此类异常,而不会影响最终用户。

请注意,我们仅限制用户 “jason” 的失败影响。如果您以任何其他用户身份登录,则不会遇到任何延迟。