【问题标题】:Envoy has listener on both 0.0.0.0:9080 and <clusterIP>:9080Envoy 在 0.0.0.0:9080 和 <clusterIP>:9080 上都有监听器
【发布时间】:2017-11-09 08:14:51
【问题描述】:

我正在使用 Istio 指南中的 Bookinfo 示例。部署成功。我可以看到产品页面。

当我查看“productpage”窗格的详细 Envoy 设置时,我感到很困惑。从 LDS 的 istio-pilot 的返回显示它有两个侦听器(以及其他侦听器),一个正在观看 0.0.0.0:9080,另一个正在观看 172.17.0.9:9080(这是 productpage pod 的 clusterIP)。

  • 172.17.0.9 上的侦听器处理入口流量并将所有内容路由到 localhost,这是有道理的。
  • 0.0.0.0:9080 上的监听器似乎处理了对应用程序其他服务的所有出口请求,例如详细信息、评论。但如果其域是“productpage.default.svc.cluster.local”,它也会处理请求,并将其路由到 pod 本身。那么当请求被发送到 productpage svc 时,这会创建一个循环吗?

我确定循环没有发生。但只是想知道是什么阻止了它?或者我阅读 Envoy 配置的方式是错误的。

另外,我认为一旦在同一端口上为0.0.0.0 创建了侦听器,就不允许侦听特定接口?

【问题讨论】:

    标签: istio


    【解决方案1】:

    实际上只有一个侦听器会绑定到 OS 套接字。另一个将 bind_to_port 设置为 false https://www.envoyproxy.io/envoy/configuration/listeners/listeners

    Envoy 可以在内部重定向到此类未绑定的侦听器。

    【讨论】:

    • 谢谢!我懂了。我再次检查了 LDS 设置。看起来端口15001 上只有一个侦听器被绑定。其他都不是。那么,在 Bookinfo 的这个例子中,端口 9080 几乎在任何地方都用于服务/pod,如果 Envoy 只监听 15001,它是如何工作的呢?即当一个请求被发送到&lt;productpage_pod&gt;:9080时,谁将它重定向到端口15001?此外,当15001 侦听器将请求重定向到端口9080 时,它是重定向到172.17.0.9:9080,还是0.0.0.0:9080,还是两者都重定向?
    • 改写第二个问题。如果向 172.17.0.9:9080 发出请求,哪个侦听器会获得重定向的流量,是 0.0.0.0:9080 上的那个,还是 172.17.0.9:9080 上的那个?
    • 我想我明白了。 0.0.0.0 在路由上下文中表示除本地之外的网络的其余部分。因此,对172.17.0.9:9080 的请求应该只路由到172.17.0.9 上的侦听器
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-01
    • 2013-12-01
    • 2018-05-02
    • 2020-06-06
    • 1970-01-01
    • 2017-08-01
    相关资源
    最近更新 更多