相关问题
Istio envoy is dropping requests with Host header
上述问题是唯一一个与我的问题有点相似的问题。但是,我标题中的主机是 service-b.myns.svc.cluster.local
我不明白为什么这应该是个问题。
情况
我有一个包含许多 Deployment
的命名空间s 和 Service
秒。对于每个 Service
我还定义了一个 VirtualService
.示例:
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
labels:
app: service-b
name: service-b
namespace: myns
spec:
gateways:
- myns.myns.svc.cluster.local
hosts:
- '*'
http:
- match:
- uri:
prefix: /.well-known
- uri:
prefix: /robots.txt
- uri:
prefix: /apple-app-site-association
- uri:
prefix: /favicon.ico
- uri:
prefix: /content/
route:
- destination:
host: service-b.myns.svc.cluster.local
port:
number: 80
问题
我有另一个服务,称它为service-a
应该能够检索 /.well-known
, robots.txt
, /content/header
, /content/footer
等。我假设是这样,因为我已经为这些路径定义了一条直接通往 service-b
的路线。 , 它们应该可以通过 service-a
检索到.但是,日志是这样说的:
[2019-02-22T01:07:54.557Z] "GET /content/headerHTTP/1.1" 404 NR 0 0 0 - "-" "curl/7.52.1" "789b3b81-9f61-43c3-b01a-b66d35c1d635" "service-b" "-" - - 10.x.x.x:80 10.y.y.y:47526
问题#1
根据 Envoy docs , NR
意味着没有路线。我没有在我的 VirtualService
中定义路线吗? ?
问题#2
我可以得到一个200
如果我只是将它们插入浏览器的 URL 栏(即 <istio-ingressgateway-ip-address>/robots.txt
),则对每个路径的响应。为什么?
一些进步
我已将问题缩小到 service-a
的 pod 上的 istio 代理.我通过一次一个地删除 istio-proxy sidecars 来做到这一点。有两种情况我成功了200
来自 service-a
:
[SVCA][ISTIOPROXY] ---> X [ISTIOPROXY][SVCB] # Does not work
[SVCA][ISTIOPROXY] ---> X [SVCB] # Does not work
[SVCA] ---> ✓ [SVCB] # Does work
[SVCA] ---> ✓ [ISTIOPROXY][SVCB] # Does work
最佳答案
您没有配置默认路由。
默认路由示例:
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
labels:
app: service-b
name: service-b
namespace: myns
spec:
gateways:
- myns.myns.svc.cluster.local
hosts:
- '*'
http:
- match:
- uri:
prefix: /.well-known
- uri:
prefix: /robots.txt
- uri:
prefix: /apple-app-site-association
- uri:
prefix: /favicon.ico
- uri:
prefix: /content/
route:
- destination:
host: service-a.myns.svc.cluster.local
port:
number: 80
- route:
- destination:
host: service-b.myns.svc.cluster.local
port:
number: 80
关于kubernetes - Istio 在应该给出 200 时给出 404 NR 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54818805/