Google cloud platform 以ngnix入口控制器作为节点的GCP内部负载平衡器端口:连接被拒绝

Google cloud platform 以ngnix入口控制器作为节点的GCP内部负载平衡器端口:连接被拒绝,google-cloud-platform,google-compute-engine,nginx-ingress,google-cloud-internal-load-balancer,Google Cloud Platform,Google Compute Engine,Nginx Ingress,Google Cloud Internal Load Balancer,背景: 我们在GKE集群中托管应用程序,在GKE集群上运行的应用程序有一个入口资源,其中包含指向我们的应用程序服务的规则。我们正在使用ingress nginx作为此群集的入口控制器 我们现在已经创建了一个GCP内部负载平衡器(TCP),以指向入口控制器服务正在侦听的节点端口。 (注:nginx入口控制器服务”为节点端口类型) 当我们尝试使用(http端口)访问应用程序时,它抛出连接拒绝异常,但当我们直接使用nodeport(nodeport)访问时,它会得到所需的响应 当我们将入口服务作为类型

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

我们现在已经创建了一个GCP内部负载平衡器(TCP),以指向入口控制器服务正在侦听的节点端口。 (注:nginx入口控制器服务”为节点端口类型)

  • 当我们尝试使用(http端口)访问应用程序时,它抛出连接拒绝异常,但当我们直接使用nodeport(nodeport)访问时,它会得到所需的响应

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

  • 有人能帮我们弄清楚什么时候显式创建ILB并发送请求,为什么当我们在http端口上点击ILB前端时应用程序不可访问,而当ILB前端为ILB-IP时,应用程序可访问:


    提前感谢!

    入口控制器需要配置为本文所述的类型:LoadBalancer,这将创建一个外部LB,将流量路由到通过入口资源公开的服务,这是预期的方式


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

    在与google支持人员的讨论中了解到,服务类型as LoadBalancer在每个节点上创建一个IP表项,允许流量从端口80重定向到定义的节点端口

    因此,如果我们的用例需要显式创建ILB,并且我们的应用程序可以通过节点端口访问, 然后“我们必须手动编辑每个kubernetes节点上的IP表,以便将通信量从端口80重定向到节点端口”

    检查此项:


    GCP已经开始支持K8S服务的内部LB创建。

    基本上,我们希望使用ILB,我们可以在两个不同的K8S后端之间切换。为此,我们正在创建一个nginx入口服务作为节点端口,并打算将流量从ILB上的端口80转发到K8S集群中所需的节点端口。简言之我们正在尝试执行与服务类型负载平衡器相同的操作。但是,ILB使用与NodePort相同的端口,但无法将端口80转发到NodePort。有什么方法可以实现吗?附加链接以供参考。