当前位置: 首页 > 知识库问答 >
问题:

从istio mesh内的POD获取所有出站HTTP调用的404

卓宏达
2023-03-14

我有istio v1。1.6安装在Kubernetes v1上。11.使用istio存储库中提供的舵图和一系列覆盖,包括:

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

问题是,我不能向运行在端口80(内部)上的服务发出任何简单的出站HTTP请求

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

来自特使的istio代理日志中的响应标志表示无法找到正确的路由:

"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工作完全正常。
  • 检查代理状态也没有显示任何内容:所有pod都是SYNCED。
  • mTLS被禁用
  • 上面的例子是对外部服务的调用,但是对内部服务的调用(例如:curlanother-service.svc.cluster.local/health)也有同样的问题。
  • 我希望内部网格服务的调用开箱即用,尽管我试图定义DestinationRoadServiceEntry,但这并没有帮助。
  • 我真的不想添加traffic.sidecar.istio.io/excludeOutboundIPRanges:"0.0.0.0/0"注释到部署,因为根据docs: <区块报价>

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

    你知道我还能去哪里找吗?或者我还缺什么?

  • 共有1个答案

    范彭亮
    2023-03-14

    在我看来,你的istio代理侧车中定义了一个短的连接超时,请在这里查看特使项目的类似github问题。

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

     类似资料:
    • 类似于Servlet.Filter)在Web中添加时.xml可以拦截任何独立于框架(Spring / CXF / Jersy等)的传入JVM /传出(作为响应),我正在尝试找到一个API,它可以拦截来自JVM的任何传出HTTP调用,以添加/修改独立于框架的标头。此外,通过代理路由请求听起来令人不知所措。 论坛上经常会误解“呼出HTTP呼叫”这个词,所以让我用例子来解释一下。 让我们假设有两个JVM

    • 问题内容: 我有一个程序可以执行为 这将安装一堆东西,并且屏幕上发生了很多活动。 现在,我正在尝试通过执行 希望所有发生在屏幕上的活动都被捕获在(或)中。但是,在进程运行时,内容直接打印到终端,而不会捕获到或中,在进程运行后,它们都为空。 这里会发生什么?如何捕获此内容? 问题答案: 通常,您所做的已经足以将所有输出传递到变量。 一个例外是,如果您正在运行的程序用于直接连接到其控制终端,并通过该终

    • 问题内容: 有没有办法获取所有当前在javascript范围内的变量? 问题答案: 否。“范围内”变量由“作用域链”确定,该变量无法通过编程方式访问。 有关详细信息(很多),请查看ECMAScript(JavaScript)规范。这是指向官方页面的链接,您可以在其中下载规范规范(PDF),而这是指向官方的可链接HTML版本的链接。 根据您对Camsoft的评论进行更新 事件函数作用 域中 的变量取

    • 获取错误: 混合内容:“HTTPS:xxx”处的页面是通过HTTPS加载的,但请求的XMLHttpRequestendpoint“http://127.0.0.1/xxx”不安全。此请求已被阻止;必须通过HTTPS提供内容。 而且 未捕获得NetworkError:无法对“XMLHttpRequest”执行“Send”:无法加载“http://127.0.0.1/xxx”. 两周前,我可以成功运行

    • 我有一个要求,在我必须使用不同的有效负载值对Httpendpoint进行Http出站调用的循环中,调用函数不必等待从出站调用收到的响应,因此基本上出站调用将在循环中异步发生。 有没有办法用Http.outbound网关