首页 > 其他分享 >Istio流量治理基础

Istio流量治理基础

时间:2022-10-21 16:11:41浏览次数:57  
标签:VirtualService Envoy Istio 流量 网格 治理 路由

流量治理

  • Istio的流量路由规则使运维人员可以轻松控制服务之间的流量和API调用
    • Istio简化了诸如断路器,超时和重试之类的服务级别属性的配置,并使其易于设置重要任务(A/B测试,canary部署和基于百分比的流量拆分的分段部署)
    • 它还提供了开箱即用的故障恢复功能,有助于使应用程序更强大,以防止相关服务或网络的故障
  • 使用Istio进行流量管理从本质上是将流量与底层基础架构的伸缩机制相解耦,从而让运维工程师能够通过Pilot指定它们希望流量自身需要遵循那些规则,而非仅仅只能定义由那些特定的pod/vm接收流量,并在这些pod/vm之间以受限于数量比例的方式分配流量;
    • Pilot和Envoy proxy负责实现流量规则中定义的流量传输机制
    • 例如,可以通过pilot指定到希望特定服务的5%流量到canary版本,而与canary部署的大小无关,或者根据请求的内容将流量发送到特定版本
  • Istio的所有路由规则和控制策略都基于kubernetes CRD实现,这包括网络功能相关的VirtualService、DestinationRule、Gateway、ServiceEntry和EnvoyFilter等;

Istio流量治理的关键配置

  • Istio通过Ingress Gateway为网格引入外部流量;
    • Gateway中运行的主程序为Envoy,它同样从控制平面接收配置,并负责完成相关的流量传输;
    • 换言之,Gateway资源对象用于将外部访问映射到内部服务,它自身值负责通信子网的相关功能,例如套接字,而七层路由功能则由VirtualService实现;
  • Istio基于ServiceEntry资源对象将外部服务注册到网格内,从而将外部服务以类同内部服务一样的方式进行访问治理;
    • 对于外部服务,网格内Sidecar方式运行的Envoy即能执行治理;
    • 若需要将外出流量收束于特定几个节点时则需要使用专用的Egress Gateway完成,并基于此Egress Gateway执行相应的流量治理;

  • VirtualService和DestinationRules是Istio流量路由功能的核心组件
  • VirtualService用于将分类流量并将其路由到指定的目的地(Destination),而Destination Rules则用于配置那个指定Destination如何处理流量
    • VirtualService
      • 用于在Istio及其底层平台(例如kubernetes)的基础上配置如何将请求路由到网格的各Service之上
      • 通常由一组路由规则(routing rules)组成,这些路由规则按顺序进行评估,从而使Istio能够将那些对VirtualService的每个给定请求匹配到网格内特定的目标之上
      • 事实上,其定义的是分发给网格内个Envoy的VirtualService和Route的相关配置
    • Destination Rules
      • 定义流量在目标内部的各端点之间的分发机制,例如将各端点进行分组,分组内端点间的流量均衡机制,异常探测等;
      • 事实上,其定义的是分发给网络内各Envoy的Cluste的相关配置
  • VirtualService定义虚拟主机及相关的路由规则,包括路由至哪个目标(集群或子集)

  • DestinationRule定义集群或子集内部的流量分发机制

VirtualService和DestinationRule

配置Istio流量治理

  • 流量治理基础

    • 集群外部的入站流量会经由Ingress Gateway到达集群内部

      • 需要经由Gateway定义Ingress Gateway上的“虚拟主机”

      • 包括目标流量访问的“host”,以及虚拟主机监听的端口等

    • 集群内部的流量仅会在Sidecar之间流动

      • VirtualService为Sidecar Envoy定义Listener(主要定义流量路由机制等)

      • DestinationRule为Sidecar Envoy定义Cluster(包括发现端点等)

               

网格流量治理和服务发现

  • 网格内服务发送和接收的所有流量(Data Plan流量——都要经由Envoy代理进行

    • 绑定到服务的所有流量都会通过Sidecar Envoy自动进行重新路由
  • Istio借助于服务注册中心完成服务发现
    • Istio自身并不进行服务发现功能,它需要借助于服务注册中心发现所有的Service及相应的各Endpoint
    • Istio还假设服务的新实例会自动注册到服务注册表,并且会自动删除不健康的实例
    • kubernetes、Mesos等平台能够为基于容器的应用程序提供服务发现功能,另外也存在大量针对基于VM的应用程序的解决方案

  • kubernetes系统上,Istio会将网格中的每个Service的端口创建为Listener,而其匹配到的Endpoint将组合成为一个Cluster
    • 这些Endpoint和Cluster将配置在网格内的每个sidecar Envoy之上
    • 对于某个特定Sidecar Envoy来说,仅其自身所属的Service生成的Listener为Inbound Listener,而所有Service生成Listener都将配置为其上的Outbound Listener
      • Inbound Listener:接收其所属Service的部分或全部流量
      • Outbound Listener:代理本地应用访问集群内的其它服务
    • 进出应用的所有流量都将被Sidecar Envoy拦截并基于重定向的方式进行处理

参考文档

流量管理:https://istio.io/latest/docs/reference/config/networking/

 

标签:VirtualService,Envoy,Istio,流量,网格,治理,路由
From: https://www.cnblogs.com/wangguishe/p/16806540.html

相关文章

  • 大厂Istio基础与实践 云原生“薪”能力合集,一线大厂实战
    大厂Istio基础与实践云原生“薪”能力合集,一线大厂实战导言:上一篇章给大家介绍了服务治理方案ServiceMesh(服务网格)产生的背景、逻辑架构、应用场景。本篇将要介绍的......
  • 安装istio和部署bookinfo项目
    一istio安装1.1下载安装​​https://istio.io/latest/docs/setup/getting-started/​​安装前提:你的服务器必须可以连接外网需要下载谷歌镜像#下载cd/usr/local/curl......
  • 主数据怎么治理?
    编 辑:辉总​早在十几年前,主数据管理就已经是企业信息化建设中的核心部分。由于企业普遍对此缺乏正确的认识、系统个数较少,数据混乱现象不明显等原因,导致主数据管理这一手段......
  • 数据治理工作的8种推进套路(下)
    编 辑:彭文华​彭友们好,我是老彭啊。周二写了一个数据治理工作8种推进方式,时间关系没写完,结果一大堆人私信我催稿我说你们催稿的彭友能不能帮我推荐几个数据治理的人才啊!初......
  • 非结构化数据怎么治理?
    编 辑:彭文华​彭友们好,我是老彭。最近遇到几个项目,都跟非结构化数据脱不开关系。老彭刚毕业的时候,做的是数据库的活儿,那都是结构化数据。后来有了hadoop技术,可以用来处理物......
  • 流量特征
    一些流量特征整理ApacheStruts2(CVE-2017-5638)Content-Type:%{#context['com.opensymphony.xwork2.dispatcher.HttpServletResponse'].addHeader("lywa2mzr,'1')}.......
  • Istio常用命令
    Istio使用帮助#istioctl--helpIstioconfigurationcommandlineutilityforserviceoperatorstodebuganddiagnosetheirIstiomesh.Usage:istioctl[comm......
  • 一键体验 Istio
    背景介绍Istio 是一种服务网格,是一种现代化的服务网络层,它提供了一种透明、独立于语言的方法,以灵活且轻松地实现应用网络功能自动化。它是一种管理构成云原生应用的不同......
  • istio 1.15.2安装部署
    一、官方脚本安装部署[root@alicound-rocky-8-6~]#curl-Lhttps://istio.io/downloadIstio|ISTIO_VERSION=1.15.2TARGET_ARCH=x86_64sh-%Total%Receiv......
  • 一篇带你了解如何使用纯前端类Excel表格构建现金流量表
    现金流量表(CashFlowStatement),是指反映企业在一定会计期间现金和现金等价物流入和流出的报表。现金流量表是企业财务报表的三个基本报告之一(另外两个是资产负债表和损益表......