GKE集群-我可以将流量从全局http负载均衡器定向到nginx入口控制器

时间:2020-02-18 15:15:22

标签: nginx google-cloud-platform load-balancing google-kubernetes-engine nginx-ingress

我正在使用GKE,并且在集群上安装了 nginx入口控制器。 GCP自动创建一个 TCP负载平衡器,以将请求从外部临时IP重定向到我的群集节点(nginx)。

我在VM上部署了另一个Web应用程序,我想按VM和gke群集之间的子域平衡传入的请求。为此,我创建了一个具有2个后端以及主机和路径规则的全局负载平衡器

我将DNS记录A配置为指向全局负载平衡器。

我可以从我的域访问VM,但无法访问GKE上安装的入口。

我尝试将gke-backend配置为实例组(节点池)和指向TCP负载平衡器的Internet网络端点组。但没有成功:-(

如何在GCP中的VM和GKE群集之间取得平衡?

3 个答案:

答案 0 :(得分:1)

我建议您检查全局LB上的日志,以查看目的地为您的GKE群集的数据包发生了什么,有关更多信息,请参见this。如果可能,共享任何错误或警告。

这样,我们可以更好地了解正在发生的事情。

答案 1 :(得分:1)

通常不这样做。首先,您不能将HTTP(S)负载均衡器定位到网络负载均衡器。 LB必须指向由网络端点组或实例组组成的后端服务。

唯一可行的方法是使用包含所有当前节点的非托管实例组。然后,您可以将非托管实例组作为后端服务添加到HTTP(S)LB,并指定Nginx Ingress nodePort作为后端端口。

上述问题是,当任何群集节点发生更改(由于升级而扩大,缩小或更换)时,非托管实例组将不会自动使用新节点进行更新。您需要手动使组保持最新状态。

答案 2 :(得分:0)

我通过使用2个静态IP和2个DNS A记录解决了我的问题,第一个(* .mydomain)针对k8s集群,第二个(service.mydomain)针对我的VM。

这是我刚想到的快速解决方案