Istio 中流量管理的主要优势在于它允许动态请求路由。动态请求路由的一些常见应用包括金丝雀部署和蓝/绿部署。Istio 流量管理中的两个关键资源是虚拟服务(virtual services)目标规则(destination rules)

  • 虚拟服务拦截流量并将其定向到您的 Kubernetes 服务,从而使您可以将流量百分比从请求分配到其他服务。您可以使用它们来定义一组路由规则,以在寻址主机时应用。
  • 目标规则可以作为有关哪些服务版本可用于接收虚拟服务流量的唯一来源。您可以使用这些资源来定义策略,该策略适用于路由发生后的服务流量。

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

在此示例中,我们将流量转到reviews服务,并对其进行拦截,以使流量的 50%到达服务的v1版本,而 50%到达v2版本。

部署此虚拟服务后,我们将生成流量,并从 Kiali 可视化中看到流量在服务的两个版本之间平均路由。

  1. 转到项目视图,然后单击导入 YAML
  2. 将下面的资源复制到表单中。
  3. 单击导入
  1. apiVersion: networking.istio.io/v1alpha3
  2. kind: VirtualService
  3. metadata:
  4. name: reviews
  5. spec:
  6. hosts:
  7. - reviews
  8. http:
  9. - route:
  10. - destination:
  11. host: reviews
  12. subset: v1
  13. weight: 50
  14. - destination:
  15. host: reviews
  16. subset: v3
  17. weight: 50
  18. ---
  19. apiVersion: networking.istio.io/v1alpha3
  20. kind: DestinationRule
  21. metadata:
  22. name: reviews
  23. spec:
  24. host: reviews
  25. subsets:
  26. - name: v1
  27. labels:
  28. version: v1
  29. - name: v2
  30. labels:
  31. version: v2
  32. - name: v3
  33. labels:
  34. version: v3

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

下一步:产生并查看流量