VirtualServiceUnreachableRule
當虛擬服務包含一個永遠不會被使用的匹配規則時,就會出現此訊息,因為先前的規則指定了相同的匹配。當有多個規則根本沒有任何匹配時,也會出現此訊息。
範例
您將會收到此訊息
Warning [IST0130] (VirtualService sample-foo-cluster01.default) VirtualService rule #1 not used (only the last rule can have no matches).
當您的叢集有以下虛擬服務時
apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
name: sample-foo-cluster01
namespace: foo
spec:
hosts:
- sample.foo.svc.cluster.local
http:
- fault:
delay:
fixedDelay: 5s
percentage:
value: 100
route:
- destination:
host: sample.foo.svc.cluster.local
- mirror:
host: sample.bar.svc.cluster.local
route:
- destination:
host: sample.bar.svc.cluster.local
subset: v1
在這個範例中,虛擬服務同時指定了錯誤注入和鏡像。同時使用兩者是被允許的,但它們必須在同一個路由條目中。這裡使用者使用了兩個不同的 http 路由條目(每個 -
對應一個),第一個會覆蓋第二個。
如何解決
當您有一個沒有 match
的 http
時,只能有一個 http 路由。在這種情況下,移除 mirror
前面的 "-"
表示存在一個單一的無匹配路由,它既注入錯誤也執行鏡像,而不是一個注入錯誤的路由和一個執行鏡像的路由。
在設定複雜的路由時,請小心 YAML 的格式。
重新排序您的路由,使最明確的路由排在最前面。將「捕獲所有」路由放在最後。