设置 Istio 的流量管理组件

概述

Istio 中流量管理的一个核心优势是它允许动态请求路由。动态请求路由的一些常见应用包括金丝雀部署和蓝绿部署。Istio 流量管理中的两个关键资源是virtual servicedestination rule

  • virtual service拦截并引导流量到你的 Kubernetes 服务,允许你将请求中的流量百分比分配给不同的服务。您可以使用它们来定义一组路由规则,以便在主机被寻址时应用。
  • destination rule作为关于哪些服务版本可用于接收来自虚拟服务的流量的单一真相来源。您可以使用这些资源来定义策略,这些策略适用于路由发生后打算用于服务的流量。

本节介绍了如何添加与示例 BookInfo 应用程序中的 reviews微服务相对应的虚拟服务示例。该服务的目的是在reviews服务的两个版本之间分配流量。

在这个例子中,我们把流量带到reviews服务,并拦截它,使 50%的流量流向服务的v1,50%的流量流向v2

部署完这个虚拟服务后,我们会产生流量,从 Kiali 可视化中可以看到,流量被均匀地路由到两个版本的服务之间。

操作步骤

创建 Istio

  1. 集群资源管理器,从导航下拉菜单中选择Istio
  2. 单击侧面导航栏中的DestinationRule
  3. 单击Create from Yaml
  4. 复制并粘贴下面提供的 DestinationRule yaml。
  5. 单击Create
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: reviews
spec:
host: reviews
subsets:
- name: v1
labels:
version: v1
- name: v2
labels:
version: v2
- name: v3
labels:
version: v3

部署 VirtualService

然后部署 VirtualService,提供利用 DestinationRule 的流量路由。

  1. 单击侧面导航栏中的VirtualService
  2. 单击Create from Yaml
  3. 复制并粘贴下面提供的 VirtualService yaml。
  4. 单击Create
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: reviews
spec:
hosts:
- reviews
http:
- route:
- destination:
host: reviews
subset: v1
weight: 50
- destination:
host: reviews
subset: v3
weight: 50
---

结果:当你为该服务产生流量时(例如,通过刷新入口网关 URL),Kiali 流量图将反映出reviews服务的流量在v1v3之间平均分配。

后续操作

查看 Istio 管理的流量

最后由 yzeng25更新 于