Istio里的VirtualService和DestinationRule介绍

描述

最近在研究Istio,流量治理这块是一个大头,有好多内容。后期我应该会单独搞一个小课程出来。这块儿内容有两个非常核心的概念--VirtualService和DestinationRule。

1)VirtualService:

定义对特定目标服务的一组流量规则,它将满足条件的流量转发到对应的服务后端,这个服务后端可以是一个或多个服务,也可以是DestinationRule定义的服务子集(subset)。

示例:

 

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: forecast-route
spec:
  hosts:  ##定义流量发送的目标地址,可以是service名字也可以是具体的IP地址,通常是service的名字。
  - forecast 
  http:  ##这个字段可以是http、tcp或者tls(https)
  - match: ##定义匹配规则
    - headers:  ##匹配header中location取值为north的请求
        location:
        exact: north
    route: ##定义具体的路由规则,这里指的是当请求符合匹配规则时,走该规则
    - destination: ##定义流量被转发到哪里去
      host: forecast  ##这个host跟上面的host类似,通常也是用service名字定义
      subset: v2   ##具体规则需要在DestinationRule中定义,这里只是指定一个名字v2
  - route:
    - destination:
      host: forecast
      subset: v1

 

说明:这个小例子定义了两条规则,1)如果过来的请求header中,location匹配了north关键词,则会访问forecast这个service的v2版本;2)否则会访问到forecast服务的v1版本。其中v1和v2的具体流量走向还得看DestinationRule如何定义。

2)DestinationRule:

它用来定义流量路由之后的去处,和VirtualService配合使用,在VirtualService中定义了subsets的名字,那么在DestinationRule中定义subsets具体的内容,而且在DestinationRule里还提供了具体的流量策略。

示例:

 

apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: forecast-dr ##定义DestinationRule的名字
spec:
  host: forecast ##定义流量发送的目标地址,和VirtualService中的该字段含义一样
  subsets:  ##定义subsets规则
  - name: v2  ##名字是v2,和VirtualService里定义的要保持一致
    labels:
      version: v2
    trafficPolicy:  ##定义流量策略,可选字段trafficPolicy、connectionPool(连接池设置,可以实现限速或限流的效果)、outlierDetection(异常点检查,可以做熔断效果)、tls
      loadBalancer:  ##定义负载均衡算法,可选字段simple、consistentHash(一致性hash)、localityLbSetting(位置负载均衡)
        simple: ROUND_ROBIN  ##simple指的是标准负载均衡算法,可以是ROUND_ROBIN、LEAST_CONN(最少连接)、RANDOM(随机)、PASSTHROUGH(直接转发到客户端连接的目标地址,即没有做负载均衡)
  - name: v1
    labels:
      version: v1

 

说明:主要定义v1和v2的流量策略,其中v2会走ROUND_ROBIN的负载均衡算法,而v1没有特殊的流量策略。

可以毫不夸张地讲,Istio的流量治理离不开VirtualService和DestinationRule的配置,上面的两个示例仅仅是一丢丢皮毛,还有好多参数可以配置。比如,限流、熔断、灰度发布等等。




审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分