首页 > 其他分享 >istio-虚拟服务(VirtualService)

istio-虚拟服务(VirtualService)

时间:2024-01-19 16:11:44浏览次数:36  
标签:服务 匹配 istio 流量 reviews 虚拟 VirtualService 路由

 

在istion中,虚拟服务(Virtual service)和目标规则(destination rule)是流量路由功能的关键组成部分。在Istio所提供的基本连接和发现基础上,通过虚拟服务,能够将请求路由到Istio网格中的特定服务。每个虚拟服务由一组路由规则组成,这些路由规则使Istio能够将虚拟服务的每个给定请求匹配到网格内特定的目标地址。

虚拟服务(VirtualService)定义了一组寻址主机时要使用的流量路由规则,每个路由规则为特定协议的流量定义匹配了条件。如果流量匹配,则将其发送到注册表中定义的命名目标服务(或其子集/版本)。同时流量来源也可以在路由规则中匹配,从而能够允许针对特定的客户端上下文自定义路由。下面是虚拟服务的一些关键内容:

  • 服务(Service):应用绑定到服务注册表中的唯一名称。服务包含多个网络端点,这些端点由在Pod、容器和VM等上运行的工作负载实例进行实现。
  • 服务版本(Service versions)或子集:在持续部署的场景中,对于给定的服务,可能存在不同的应用程序实例。它们可能是对同一服务的迭代更改,这些版本部署在不同的环境(产品,阶段和开发等)中。场景包括A / B测试和金丝雀发布等。可以根据各种标准(标头,网址等)和/或通过分配给每个版本的权重来确定特定版本的选择。每个服务都有一个包含其所有实例的默认版本。
  • 来源(Source):调用服务的下游客户端。
  • 主机(Host):下游客户端连接服务时所使用的地址。
  • 访问模式(Access model):应用程序仅需要处理目标服务(主机),而无需了解各个服务版本(子集)。版本的实际选择由代理/sidecar决定,从而使应用程序代码能够与所依赖服务的脱钩。

在Kubernetes中,默认情况下以下示例将所有HTTP流量路由到带有标签“version:v1”的reviews服务。另外,以/ wpcatalog /或/ consumercatalog /开头的HTTP请求将被重写为/ newcatalog,并发送到标签为“ version:v2”的reviews服务。

 

路由规则的更多内容

正如上面所看到的,路由规则是将特定流量子集路由到指定目标地址的强大工具。 您可以在流量端口、header 字段、URI 等内容上设置匹配条件。例如, 这个虚拟服务让用户发送请求到两个独立的服务:ratings 和 reviews, 就好像它们是 http://bookinfo.com/ 这个更大的虚拟服务的一部分。 虚拟服务规则根据请求的 URI 和指向适当服务的请求匹配流量。

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: bookinfo
spec:
  hosts:
    - bookinfo.com
  http:
  - match:
    - uri:
        prefix: /reviews
    route:
    - destination:
        host: reviews
  - match:
    - uri:
        prefix: /ratings
    route:
    - destination:
        host: ratings

有些匹配条件可以使用精确的值,如前缀或正则。

您可以使用 AND 向同一个 match 块添加多个匹配条件,或者使用 OR 向同一个规则添加多个 match 块。 对于任何给定的虚拟服务也可以有多个路由规则。这可以在单个虚拟服务中使路由条件变得随您所愿的复杂或简单。 匹配条件字段和备选值的完整列表可以在 HTTPMatchRequest 参考中找到。

另外,使用匹配条件您可以按百分比”权重“分发请求。这在 A/B 测试和金丝雀发布中非常有用:

spec:
  hosts:
  - reviews
  http:
  - route:
    - destination:
        host: reviews
        subset: v1
      weight: 75
    - destination:
        host: reviews
        subset: v2
      weight: 25

https://istio.io/latest/zh/docs/concepts/traffic-management/#virtual-services

 

在定义虚拟服务时,需要设置的字段如下表所示。

表 虚拟服务字段

领域 类型 描述 必需
hosts string[] 接收请求流量的目标主机,这个主机可以是带有通配符前缀的DNS名称或IP地址。VirtualService可用于描述相应主机的所有流量属性,包括多个HTTP和TCP端口的流量属性。或者,可以使用多个VirtualService定义主机的流量属性,但要注意以下几点。

 

l   Kubernetes用户的注意事项:当使用短名称(例如,使用“ reviews”而不是“ reviews.default.svc.cluster.local”)时,Istio将根据命名空间而不是服务来解释短名称。为避免潜在的错误配置,建议始终使用完全限定的域名代替短名称。

l   hosts字段适用于HTTP和TCP服务。

l   IP地址仅允许通过网关定义的服务使用。

 

 

 

https://www.kubernetes.org.cn/6278.html

 

标签:服务,匹配,istio,流量,reviews,虚拟,VirtualService,路由
From: https://www.cnblogs.com/softidea/p/17974919

相关文章

  • 在VMWare ESXi中给[虚拟机]扩容
    在VMWareESXi中给[虚拟机]扩容http://blog.04826d.cn/?post=9操作步骤1.在VMWareESXi中给虚拟机扩容在虚拟机列表中找到待扩容的虚拟机,首先需要关闭待扩容的虚拟机。然后选中虚拟机->编辑->硬盘->然后修改大小就好了(如下图所示)注意:添加新硬盘应该也是可以的,不过......
  • Hyper-V 中的虚拟机无法ping通宿主机,宿主机可以ping通虚拟机
    Hyper-V中的虚拟机无法ping通宿主机,但是能访问宿主机的站点,宿主机可以ping通虚拟机,在同一网段只需要开启宿主机当前网络防火墙中的文件和打印机共享回显请求即可解决!参考自:https://www.cnblogs.com/staneee/p/6879842.html......
  • python虚拟环境系列(五):pycharm中快速切换环境
     pycharm版本选择说明,pycharm中快速切换环境这个功能在比较新的版本中才有我目前版本比较老 所以卸载了:  官网下载最新社区版本:https://www.jetbrains.com.cn/en-us/pycharm/download/?section=windows 当前最新版本是:  安装最新版本pycharm基本上一路下一步即可 我做了如......
  • Istio从入门到精通—— 安装 —— Kubernetes 删除 istio-system namesapce 时候,出现
    Kubernetes删除istio-systemnamesapce时候,出现Terminating解决办法当你在Kubernetes中遇到无法删除处于Terminating状态的命名空间时,可能是由于该命名空间中仍有活跃的资源或服务。要解决这个问题,你可以尝试以下几个步骤:一、常规方法检查命名空间中的活跃资源:......
  • 虚拟 IP,虚拟 IP 组网
    虚拟IP通常对于不是直接分配给真实主机网卡上的IP地址,通过某种负载均衡或者冗余机制的协议而生成的浮动IP地址,我们称为虚拟IP(VrtualIPAddress)虚拟IP组网可以通过使用虚拟化技术和网络管理软件来实现。下面是一种可能的组网方法:虚拟化平台:使用虚拟化软件(如VMware、VirtualBox等)创......
  • 解决虚拟机环境下使用Ubuntu自带的图形化工具创建的磁盘分区无法扩容的问题
    解决虚拟机环境下使用Ubuntu自带的图形化工具创建的磁盘分区无法扩容的问题先来个结论:不要使用Ubuntu自带的图形化磁盘工具创建分区,磁盘分区操作请使用fdisk等工具。正文太长不想看的记住这个结论就行,有兴趣的接着看。首先介绍一下磁盘的基本配置,vmware中创建了两块磁盘,一......
  • 解决Python虚拟环境安装模块失败的问题
    Python虚拟环境的出现为我们创建和管理项目提供了很大的方便。通过虚拟环境,我们可以隔离不同项目的依赖包,避免版本冲突和混乱。然而,有时候在虚拟环境中安装模块时会遇到各种问题,例如找不到模块、安装超时等。下面将介绍几种常见的情况和相应的解决方法,以帮助您顺利安装模块。1.网络......
  • Virtualenv创建虚拟环境
    第一步:安装以下模块pip3installvirtualenvpip3installvirtualenvwrapper-win 第二步:D盘创建Virtualenvs文件夹 第三步:环境变量配置 WORKON_HOME:D:\Virtualenvs 第四步:去python39文件夹内的Scripts文件夹中,找到virtualenvwrapper.bat文件,双击运行 第五......
  • 虚拟化(8) 直通手机给虚机
    手机:android4.1虚机:ubuntu 过程:1.参数是kvm-m6G--hdaubuntu.qcow2-usb-deviceusb-host,vendorid=0x9aa5,productid=0x0c03其中设备id的3是在手机上选了文件模式,如果是充电模式则id是0c032.启动虚机后,lsusb可以看到这个设备但是:文件管理器中看不到设备(我的手机选择了文......
  • VMware虚拟机安装openKylin(开放)麒麟系统
    1.麒麟系统简单介绍常见的有银河麒麟,中标麒麟,开放麒麟,优麒麟麒麟软件官网:https://www.kylinos.cn/开放麒麟官网:https://www.openkylin.top/优麒麟官网:https://www.ubuntukylin.com/开放麒麟和银河麒麟桌面操作系统的关系类似于深度deepin和统信UOS。前者为社区版本,后者是......