Istio实战——流量管理

流量管理

通过配置路由调整服务之间的流量,支持AB测试,金丝雀测试和流量百分比分发,支持断路器,超时和重试。

流量管理 的API 资源包括:

  • virtual service 虚拟服务
  • Destination rules
  • gateway
  • service entries
  • sidecars

1.1 virtual service

virtual service 和 Destination rules 是Istio 流量路由功能的关键构件。它基于istio平台的连接和发现,通过virtual service配置如何将请求路由到 Istio 服务网格中的微服务。

如果没有它,默认使用Envoy的轮循模型在每个服务的负载平衡池中分配流量,即轮流向每个池成员发送请求。这种分发方式,缺少一定灵活性,比如无法实现AB测试的百分比流量分发。

VS,使得请求和工作负载强分离。并处于二者之间的中间地位,实现请求到后端的流量控制。

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService #api的资源类型
metadata:
  name: reviews #虚拟服务的名称
spec:
  hosts: # 虚拟服务的主机
  - reviews
  http: # HTTP 流量路由规则的有序列表,支持http1.1 http2,grpc
  - match:  # 匹配条件
    - headers: #匹配指定header字段值的请求量,支持前缀匹配,精确匹配和正则表达式匹配
        end-user:
          exact: jason
    route: # 路由规则
    - destination: # 目的地的主机必须是 Istio 服务注册中心中的真实目的地
        host: reviews
        subset: v2
    - uri: # 基于uri的匹配请求
        prefix: /reviews #前缀匹配
    route: # 匹配的uri请求转发目的地
    - destination:
        host: reviews
  - route: # 默认转发
    - destination:
        host: reviews
        subset: v3

基于百分比的分发

spec:
  hosts:
  - reviews
  http:
  - route:
    - destination:
        host: reviews
        subset: v1
      weight: 75 # reviews:v1承载75%的流量
    - destination:
        host: reviews
        subset: v2
      weight: 25 # reviews:v2承载25%的流量

路由规则按从上到下的顺序进行计算,逐个匹配,第一个匹配则终止。如果没有匹配规则,则转发到默认规则上,否则丢弃。

VS支持http,tls,tcp的流量控制。同时通过exportto配置支持跨命名空间边界的虚拟服务的可见性。如果没有指定名称空间,则默认情况下将虚拟服务导出到所有名称空间。目前只支持当前和所有。可以配置指定应用这些路由的网关和边车的名称。

一个配置示例(只做示例,配置不一定合理):

---
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
  name: reviews-route
spec:
  hosts:
  - reviews.prod.svc.cluster.local
  http: #http/grpc流量
  - timeout: 5s # Envoy等待服务的答复的时间,默认15s
  - name: reviews-v2-routes
    match:
    - sourceLabels:
        env: prod
    - headers:
        end-user:
          exact: jason
    - uri:
        
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值