概述
- 流量镜像,也称为影子流量,是一个以尽可能低的风险为生产带来变化的强大的功能。镜像会将实时流量的副本发送到镜像服务。镜像流量发生在主服务的关键请求路径之外。
任务目标
- 使用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
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


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