VirtualServiceIneffectiveMatch

消息名称VirtualServiceIneffectiveMatch
消息代码IST0131
描述A VirtualService rule match duplicates a match in a previous rule.
等级Info

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

示例

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

  1. apiVersion: networking.istio.io/v1alpha3
  2. kind: VirtualService
  3. metadata:
  4. name: tls-routing
  5. spec:
  6. hosts:
  7. - www1.googleapis.com
  8. - api1.facebook.com
  9. tls:
  10. - match:
  11. - port: 2443
  12. sniHosts:
  13. - www1.googleapis.com
  14. route:
  15. - destination:
  16. host: www1.googleapis.com
  17. - match:
  18. - port: 2443
  19. sniHosts:
  20. - www1.googleapis.com
  21. route:
  22. - destination:
  23. host: api1.facebook.com

您将会收到以下信息:

  1. Info [IST0131] (VirtualService tls-routing.default) VirtualService rule #1 match #0 is not used (duplicates a match in rule #0).

在这个示例中,Virtual Service 对两个不同的目的地指定了相同的匹配规则。Istio 会使用第一个匹配规则,并且不会转发任何流量到第二个目的地。

解决方案

如果您需要流量能够流向多个目的地,请使用 mirror

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