kubernetes - Istio 在应该给出 200 时给出 404 NR 响应

标签 kubernetes istio envoyproxy

相关问题

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/

相关文章:

istio - istioctl x 命令指的是什么?

kubernetes - 如何配置 GKE 的 Istio 以限制导出?

docker - 无法将 shell 放入 kubernetes 中的 citadel 容器中

amazon-web-services - Istio 1.4.8 : strange 400 error when used with AWS Load balancer

kubernetes - 如何为某些节点分配 namespace ?

kubernetes - Minikube与Nginx入口路径重写问题

kubernetes - 应用程序之间的 ArgoCD 同步波

amazon-web-services - 如何将节点添加到我的 kops 集群? (这里的节点是我的外部实例)

kubernetes - 没有网络连接的其他命名空间中的 OpenShift 访问服务

Istio envoy 代理请求循环导致 OOM