第三章、Istio 流量管理-镜像

概述

    • 流量镜像,也称为影子流量,是一个以尽可能低的风险为生产带来变化的强大的功能。镜像会将实时流量的副本发送到镜像服务。镜像流量发生在主服务的关键请求路径之外。

任务目标

    • 使用book info 案例,用户jason 登录后 reviews v3 的流量 镜像到 reviews v2

前置条件

    • 正常安装Istio
    • 部署book info 项目
    • 部署 Virtual Service
kubectl apply -f samples/bookinfo/networking/virtual-service-all-v1.yaml
  • 编辑reviews 的virtualservice
kubectl edit vs reviews
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"networking.istio.io/v1alpha3","kind":"VirtualService","metadata":{"annotations":{},"name":"reviews","namespace":"default"},"spec":{"hosts":["reviews"],"http":[{"route":[{"destination":{"host":"reviews","subset":"v1"}}]}]}}
  creationTimestamp: "2022-09-15T07:20:17Z"
  generation: 7
  name: reviews
  namespace: default
  resourceVersion: "5083270"
  uid: 7896d5f6-ba8e-46f6-8c75-79b7538facdd
spec:
  hosts:
  - reviews
  http:
  - match:
    - headers:
        end-user:
          exact: jason
    mirror:                  #镜像
      host: reviews          #镜像主机
      subset: v2             #镜像版本
    mirrorPercentage:        #镜像流量的比重
      value: 100
    route:
    - destination:
        host: reviews
        subset: v3      #请求头匹配路由到了 v3 版本
  - route:
    - destination:
        host: reviews
        subset: v2        #注意此处,默认路由,修改到了v2版本
  • 编辑 ratinigs 的 virtualservice -----注入故障,便于观察日志
kubectl edit   vs ratings
apiVersion: networking.istio.io/v1beta1
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":[{"route":[{"destination":{"host":"ratings","subset":"v1"}}]}]}}
  creationTimestamp: "2022-09-15T07:20:17Z"
  generation: 6
  name: ratings
  namespace: default
  resourceVersion: "5080655"
  uid: d427456d-f1d4-4aa7-a860-5d355ed8476b
spec:
  hosts:
  - ratings
  http:
  - fault:
      abort:
        httpStatus: 500      #注入http  500 故障
        percentage:
          value: 100       #故障率 100%
    route:
    - destination:
        host: ratings
        subset: v1
  • 获取pod
kubectl get pod 
#结果
# details-v1-8464b7b547-lq4jq       2/2     Running   0          8d
# productpage-v1-55b8849485-8pzd2   2/2     Running   0          8d
# ratings-v1-8d5bd46bc-rbpdc        2/2     Running   0          8d
# reviews-v1-7bd8fb5987-clw8n       2/2     Running   0          8d
# reviews-v2-7c48f4dcf5-s449w       2/2     Running   0          7d2h
# reviews-v3-5bf5cb5b89-jsrd7       2/2     Running   0          8d
  • 用户jason 登录,访问 /productpage

  • 查看 reviews v2 pod 流量
 kubectl logs -f reviews-v2-7c48f4dcf5-s449w    # reviews-v2-7c48f4dcf5-s449w 为reviews v2 pod 名称
#出现下面报错,说明流量已经镜像到v2 版本
#   Error: unable to contact http://ratings:9080/ratings got status of 500
发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章