在 istio 网格内的 pod 的所有出站 HTTP 调用上获取 404

Posted

技术标签:

【中文标题】在 istio 网格内的 pod 的所有出站 HTTP 调用上获取 404【英文标题】:Getting 404 on all outbound HTTP calls from pods inside istio mesh 【发布时间】:2019-05-15 06:00:02 【问题描述】:

我使用 istio 存储库中提供的 Helm chart 在 Kubernetes v1.11 上安装了 istio v1.1.6,其中包括:

global:
  outboundTrafficPolicy:
    mode: ALLOW_ANY
pilot:
  env:
    PILOT_ENABLE_FALLTHROUGH_ROUTE: "1"
mixer:
  enabled: true
galley:
  enabled: true
security:
  enabled: false

问题是我无法从 istio 网格内部的 pod 向运行在端口 80(网格内部和外部)上的服务发出任何简单的出站 HTTP 请求,并且将 istio-proxy 作为 sidecar 注入。响应总是 404:

user@pod-12345-12345$ curl -v http://httpbin.org/headers
* Hostname was NOT found in DNS cache
*   Trying 52.200.83.146...
* Connected to httpbin.org (52.200.83.146) port 80 (#0)
> GET /headers HTTP/1.1
> User-Agent: curl/7.38.0
> Host: httpbin.org
> Accept: */*
>
< HTTP/1.1 404 Not Found
< date: Wed, 15 May 2019 05:43:24 GMT
* Server envoy is not blacklisted
< server: envoy
< content-length: 0
<
* Connection #0 to host httpbin.org left intact

来自 envoy 的 istio-proxy 日志中的 response flag 指出它找不到正确的路由:

"GET / HTTP/1.1" 404 NR "-" 0 0 0 - "-" "curl/7.38.0" "238d0799-f83d-4e5e-94e7-79de4d14fa53" "httpbin.org" "-" - - 172.217.27.14:80 100.99.149.201:52892 -

NR:除了 404 响应代码之外,没有为给定请求配置路由。

可能值得补充:

对 80 以外的任何端口的其他出站调用都可以正常工作。 检查 proxy-status 也没有显示任何内容:所有 pod 都已同步。 mTLS 已禁用 上面的示例是对外部服务的调用,但对内部服务的调用(例如:curl another-service.svc.cluster.local/health)也存在同样的问题。 我希望对内部网格服务的调用开箱即用,即使我尝试定义 DestinationRouteServiceEntry 也无济于事。 我真的不想根据文档将traffic.sidecar.istio.io/excludeOutboundIPRanges: "0.0.0.0/0" 注释添加到部署中:

这种方法完全绕过了 sidecar,基本上禁用了 Istio 对指定 IP 的所有功能

知道我还能在哪里查看或缺少什么吗?

【问题讨论】:

您可能希望从 Istio-proxy 添加配置转储:创建一个端口转发到您的 Pod 的端口 15000,然后运行 ​​curl localhost:15000/config_dump 【参考方案1】:

在我看来,您的 istio-proxy sidecar 中定义了短暂的连接超时,请查看 Envoy 项目的 heresimilar github issue。

顺便说一句。正如@Robert Panzer 所提到的,共享 istio-proxy 配置的整个转储将有助于调查您的特定案例。

【讨论】:

以上是关于在 istio 网格内的 pod 的所有出站 HTTP 调用上获取 404的主要内容,如果未能解决你的问题,请参考以下文章

istio-http流量管理

快速集成Citrix ADC与Istio,实现微服务应用内的流量优化!

快速集成Citrix ADC与Istio,实现微服务应用内的流量优化!

快速集成Citrix ADC与Istio,实现微服务应用内的流量优化!

Istio Gateway的典型应用--《云原生服务网格Istio》书摘07

Istio 网关之南北向流量管理(内含服务网格专家亲自解答)