0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Istio里的VirtualService和DestinationRule介绍

阿铭linux 来源:阿铭linux 2023-07-12 08:50 次阅读

最近在研究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的配置,上面的两个示例仅仅是一丢丢皮毛,还有好多参数可以配置。比如,限流、熔断、灰度发布等等。




审核编辑:刘清

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

原文标题:Istio里的VirtualService和DestinationRule

文章出处:【微信号:aming_linux,微信公众号:阿铭linux】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    文丘管应用介绍

    文丘管是根据文丘效应研制开发的一种节流式流量传感器,是一种标准节流装置。文丘管按结构分为标准文丘管和通用文丘管。文丘
    发表于 12-01 15:47

    rancher2试玩安装istio和bookinfo示例

    rancher2试玩istio,安装部署官方示例bookinfo体验
    发表于 03-14 12:29

    请问有tvp5158的VBUS的详细介绍

    手册没有tvp5158的VBUS的详细介绍,只有个patch Patch Code Download Guidelines,我想了解具体VBUS,请问有相关文档吗?
    发表于 06-06 11:47

    介绍i.MXRT启动头FDCB的lookupTable

    大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是i.MXRT启动头FDCB的lookupTable。一个MCU内部通常有很多外设模块,这些外设模块是各MCU厂商做差异化产...
    发表于 02-17 07:47

    string.c相关函数介绍

    一、string.c相关函数介绍string.h主要包含了C语言对字符串操作的相关函数,这篇文章就介绍几个比较常用的函数重新自己实现。并且每个函数给出了2种以上的不同写法,全部采用
    发表于 02-28 09:46

    如何在Arm上利用Istio搭建一个基于Kubernetes的Service Mesh平台

    ,另一方面,又通过Service Function Chain将各个服务有机的连接在一起,从而组合实现复杂的功能。在这篇文章中,我们将介绍如何在Arm平台上,利用Istio,搭建一个
    发表于 03-30 10:59

    搭建基于Arm的kubernetes+Istio开发环境

    1、如何在Arm平台上利用Istio搭建一个基于Kubernetes的Service Mesh平台随着云计算的普及,越来越多的公司、组织及个人开发者开始将业务转移至云服务提供商(如Ali,GKE
    发表于 07-12 15:39

    在线路设计“地”有多少种

    在PADS如何分地在后面的文章介绍。以下是网上下的关于地的划分,供参考:
    发表于 06-26 16:18 1405次阅读

    MP3方案蓝牙方案介绍.pdf

    MP3方案蓝牙方案介绍
    发表于 05-02 16:39 84次下载

    阿里云Kubernetes Service Mesh实践进行时(1): Istio初体验

    环境和基础设施后端,从这些细节中抽象出Envoy代理和Istio管理的服务。 后续文章会陆续介绍相关内容。PilotPilot负责收集和验证配置并将其传播到各种Istio组件。它从Mixer
    发表于 07-24 17:14 253次阅读

    华为云国内首发Istio服务网格

    华为云国内首家推出了Istio服务网格产品,该产品与CCE容器引擎深度整合,提供非侵入、智能流量治理的应用全生命周期管理方案,增强了华为云容器服务全栈能力。 华为EBG中国区行业云拓展部部长胡维琦做
    的头像 发表于 09-08 09:36 3749次阅读

    Nacos 1.1.4 发布,业界率先支持 Istio MCP 协议

    Nacos是阿里巴巴开源的服务发现与配置管理项目,本次发布的1.1.4版本,主要带来的是与Istio的对接功能,使用的是Istio最新的MCP协议。本文将介绍包括这个功能在内的新版本发布的功能。升级
    发表于 11-14 23:06 1542次阅读

    既然有了Kubernetes,为什么还需要Istio

    Envoy 引入了 xDS 协议,该协议受到各种开源软件的支持,例如Istio、MOSN等。Envoy 将 xDS 贡献给服务网格或云原生基础设施。Envoy 本质上是一个现代版本的代理,可以通过
    的头像 发表于 12-11 17:28 926次阅读
    既然有了Kubernetes,为什么还需要<b class='flag-5'>Istio</b>?

    成为Istio专家,开启云原生应用之旅!

    ICA (Istio Certified Associate)认证考试展示了对Istio原则、术语和最佳实践的深入理解,以便建立Istio。这对于在当今日益复杂的微服务计算环境中工作至关重要。
    的头像 发表于 02-21 15:11 456次阅读
    成为<b class='flag-5'>Istio</b>专家,开启云原生应用之旅!

    深度解析Istio Proxy边车容器的功能与能力

    在创建Pod的请求到达Kube-apiserver后,首先进行认证鉴权,然后在准入控制阶段 kube-apiserver以REST的方式同步调用sidecar-injector webhook服务进行init容器与istio-proxy容器的注入,最后将Pod对象持久化存储到Etcd中。
    发表于 03-04 09:43 1421次阅读
    深度解析<b class='flag-5'>Istio</b> Proxy边车容器的功能与能力