istio实验3-流量转移

实验概述

  • 这个实验将流量从微服务reviews的V1版本逐步迁移到V3版本。首先将50%的流量发送到reviews:v1,另外,50%的流量发送到reviews:v3。接着,再把 100%的流量发送到reviews:v3来完成迁移

环境准备

  • 首先,运行此命令将所有流量路由到各个微服务的 v1 版本
  • 确保环境中只有这一个VS
kubectl apply -f /root/istio-1.24.3/samples/bookinfo/networking/virtual-service-all-v1.yaml
virtual-service-all-v1.yaml
apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
  name: productpage
spec:
  hosts:
  - productpage
  http:
  - route:
    - destination:
        host: productpage
        subset: v1
---
apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
  name: reviews
spec:
  hosts:
  - reviews
  http:
  - route:
    - destination:
        host: reviews
        subset: v1
---
apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
  name: ratings
spec:
  hosts:
  - ratings
  http:
  - route:
    - destination:
        host: ratings
        subset: v1
---
apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
  name: details
spec:
  hosts:
  - details
  http:
  - route:
    - destination:
        host: details
        subset: v1
---

image

把50%的流量转移至V3

  • 把 50% 的流量从 reviews:v1 转移到 reviews:v3
kubectl apply -f /root/istio-1.24.3/samples/bookinfo/networking/virtual-service-reviews-50-v3.yaml
virtual-service-reviews-50-v3.yaml
apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
  name: reviews
spec:
  hosts:
    - reviews
  http:
  - route:
    - destination:
        host: reviews
        subset: v1
      weight: 50
    - destination:
        host: reviews
        subset: v3
      weight: 50

  • Istio的流量分发策略是基于Envoy的随机负载算法的近似概率分布,不是严格轮询,所以图中看到的不是50/50。
  • 如果请求的数量更多,统计的时间更长,这个概率会更接近50/50
  • 访问浏览器中的 /productpage 页面,大约有 50% 的几率会看到页面中有V3版本
    image

把100%的流量转移至V3

  • 如果认为 reviews:v3 微服务已经稳定,可以通过应用 Virtual Service 规则将 100% 的流量路由 reviews:v3
kubectl apply -f /root/istio-1.24.3/samples/bookinfo/networking/virtual-service-reviews-v3.yaml
virtual-service-reviews-v3.yaml
apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
  name: reviews
spec:
  hosts:
    - reviews
  http:
  - route:
    - destination:
        host: reviews
        subset: v3

  • 随着时间的推移,流量会逐渐转移到V3,如下图所示

image

image

posted @ 2026-03-27 11:23  立勋  阅读(9)  评论(0)    收藏  举报