Azure aks 节点停止流向特定 ip 的出口流量

Azure aks node stops egress traffic to specific ip

我们有一个应用程序托管在 azure aks kubernetes 集群上。它基本上是一个 Web 应用程序,它使用一个 java 后端和一个设置为反向代理的 nginx 容器来引导 http 流量。大部分流量被路由到后端服务,但我们将几个端点定向回我们的应用程序本地实例(使用 public 域)。

这个设置在相当稳定的流量负载下运行了大约一周,然后突然停止代理流量到我们的本地资源。我们最初认为有人更改了防火墙设置,但进一步测试表明问题出在托管 nginx 代理的单个节点上。

我能够通过 ssh 进入节点并尝试使用 public http 地址访问我们的本地服务器失败。但是,我可以访问 Internet 上的任何其他站点,包括我们在其他 IP 地址上托管的站点。如果我通过 ssh 连接到另一个节点,我可以毫无问题地访问我们的本地托管站点。似乎我们的节点正在阻止或被阻止访问我们的站点,但我们找不到任何负责的机制。 afaik 没有发生防火墙或配置更改。 Azure aks 文档说 http 流量出口没有默认限制。有人遇到过这个问题吗?

这是我们的 nginx 配置中的一个块,它将请求代理到我们的本地实例:

    location /civix/content/oic {
        proxy_pass $on_prem_site;
        proxy_set_header Host $server_name;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_intercept_errors on;
    }

由于您能够从行为异常的节点连接到其他站点,我假设这不是解析 DNS 名称的问题,您根本无法连接到以下本地应用程序成功的 DNS 查找。任何有关无法访问本地应用程序的其他详细信息都会有所帮助。

要获得即时反馈,请尝试关闭 nginx 中的 proxy_intercept_errors 设置,看看是否能为您提供更多有用的信息。

检查本地应用程序是否是 rate-limiting/blocking 与故障节点出口关联的 IP 地址。如果您无权访问本地应用程序,请尝试将 ngingx 代理服务移动到新节点(使用节点亲和力来定位 "good" 节点 - https://docs.microsoft.com/en-us/azure/aks/operator-best-practices-advanced-scheduler#control-pod-scheduling-using-node-selectors-and-affinity)。

流量可能会再次开始流动,这将在您解决本地应用程序方面的阻塞问题时验证理论。