-1

背景:我们在 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 时应用程序可以访问:?

提前致谢!

4

3 回答 3

0

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

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

于 2018-11-29T22:39:43.287 回答
0

通过与 google 支持的讨论得知,作为 LoadBalancer 的服务类型会在每个节点上创建一个 IP 表条目,从而允许流量从端口 80 重定向到定义的节点端口。

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

于 2018-12-20T07:16:13.573 回答
0

结帐:https ://medium.com/google-cloud/internal-load-balancing-for-kubernetes-services-on-google-cloud-f8aef11fb1c4

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

于 2019-05-10T05:20:58.357 回答