[英]Istio Virtual Service is not working very well
我發現我的虛擬服務的重寫功能不能很好地工作。 這是我的虛擬服務和 DestinationRule yaml 文件:
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
name: leads-http
namespace: seldon
spec:
gateways:
- istio-system/seldon-gateway
hosts:
- '*'
http:
- match:
- uri:
prefix: /seldon/seldon/leads/
rewrite:
uri: /
route:
- destination:
host: leads-leads
port:
number: 8000
subset: leads
---
apiVersion: networking.istio.io/v1beta1
kind: DestinationRule
metadata:
name: leads-leads
namespace: seldon
spec:
host: leads-leads
subsets:
- labels:
version: leads
name: leads
trafficPolicy:
connectionPool:
http:
idleTimeout: 60s
當我發送一個http請求時:
curl --location --request POST 'http://localhost/seldon/seldon/leads/v2/models/leads-lgb/versions/v0.1.0/infer'
我發現 istio-proxy 服務打印了日志中未找到的 404:
"POST /seldon/seldon/leads/v2/models/leads-lgb/versions/v0.1.0/infer HTTP/1.1" 404
即使我期望:
POST /v2/models/leads-lgb/versions/v0.1.0/infer HTTP/1.1
我不確定發生了什么。 有人有什么主意嗎? 謝謝!
我認為您的問題是錯誤配置DestinationRule
或服務名稱 conintion。
這些規則指定負載平衡的配置、來自 sidecar 的連接池大小和異常檢測設置,以檢測和從負載平衡池中驅逐不健康的主機。
可以通過定義命名子集並覆蓋在服務級別指定的設置來指定特定於版本的策略。
注意:在路由規則明確將流量發送到該子集之前,為子集指定的策略不會生效。
在我看來, name
應該在結構中排在第一位。 至少我還沒有看到/遇到其他例子。 所以在你的情況下是正確的(至少我希望)DR 是:
apiVersion: networking.istio.io/v1beta1
kind: DestinationRule
metadata:
name: leads-leads
namespace: seldon
spec:
host: leads-leads
subsets:
- name: leads
labels:
version: leads
但是,如果這無濟於事 - 我鼓勵您檢查這個自行解決的問題:
命名服務端口沒有相同的情況嗎? 我的意思是根據顯式協議選擇,您應該在服務名稱中添加后綴... name: <protocol>[-<suffix>]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.