VirtualServiceUnreachableRule

消息名称VirtualServiceUnreachableRule
消息代码IST0130
描述A VirtualService rule will never be used because a previous rule uses the same match.
等级Warning

当 Virtual Service 包含一个永远不会使用的匹配规则时,会出现此消息,因为之前的规则中指定了相同的匹配规则。

当多个规则不存在任何匹配时,该消息也会出现。

示例

当您的集群中包含下列 Virtual Service 时:

  1. apiVersion: networking.istio.io/v1alpha3
  2. kind: VirtualService
  3. metadata:
  4. name: sample-foo-cluster01
  5. namespace: foo
  6. spec:
  7. hosts:
  8. - sample.foo.svc.cluster.local
  9. http:
  10. - fault:
  11. delay:
  12. fixedDelay: 5s
  13. percentage:
  14. value: 100
  15. route:
  16. - destination:
  17. host: sample.foo.svc.cluster.local
  18. - mirror:
  19. host: sample.bar.svc.cluster.local
  20. route:
  21. - destination:
  22. host: sample.bar.svc.cluster.local
  23. subset: v1

您将会收到以下警告信息:

  1. Warning [IST0130] (VirtualService sample-foo-cluster01.default) VirtualService rule #1 not used (only the last rule can have no matches).

在这个示例中, Virtual Service 同时指定了 fault 和 mirror 。允许同时使用,但是必须在同一个路由下。这里用户使用了两个不同的 http 路由(-),第一个会覆盖第二个。

解决方案

当您有一个没有被 matchhttp,那么只能存在一个 http 路由。在这个示例中,移除 mirror 之前无法匹配的路由 "-",最终的结果为:发生故障且进行镜像的路由,而不是一条故障路由和一条镜像路由。

设置负载的路由时,请小心处理 YAML 文件格式。

重新排列您的路线,将最具体的路由放在前面。请在最后配置 ‘catch all’ 路线。