首页 > 解决方案 > 使用 ngnix 入口控制器作为节点端口的 GCP 内部负载均衡器:连接被拒绝

问题描述

背景:我们在 GKE 集群中托管应用程序,在 GKE 集群上运行的应用程序有一个入口资源,其中包含指向我们的应用程序服务的规则。我们使用 ingress-nginx 作为这个集群的入口控制器。

我们现在已经创建了一个 GCP 内部负载均衡器 (TCP) 来指向 ingress-controller 服务正在侦听的节点端口。(注意:“nginx 入口控制器服务”是节点端口类型)

  1. 当我们尝试使用http://ILB-IP:80 (http-port) 访问应用程序时,它会抛出连接被拒绝异常,但是当我们直接使用 nodeport http://ILB-IP:31380 (nodeport)访问时会得到所需的响应

  2. 当我们将入口服务作为类型负载均衡器提供时,GCP 在后台创建一个 ILB。在这种情况下,应用程序可以通过 http 端口访问,并且所有请求都在处理。

任何人都可以帮助我们弄清楚我们何时显式创建 ILB 并发送请求,为什么当我们在 http 端口上访问 ILB 前端时应用程序无法访问,而当 ILB 前端是 ILB-IP 时应用程序可以访问:?

提前致谢!

标签: google-cloud-platformgoogle-compute-enginenginx-ingressgoogle-cloud-internal-load-balancer

解决方案


入口控制器需要配置为 type:LoadBalancer ,如本帮助中心文章中所述,这将创建一个外部 LB 以将流量路由到通过 Ingress 资源公开的服务,这是预期的方式。

当将入口控制器公开为 type:NodePort 时,可以在每个节点的 IP 上的静态端口上访问该服务,如此处所述


推荐阅读