我正在使用GKE,并且在集群上安装了 nginx入口控制器。 GCP自动创建一个 TCP负载平衡器,以将请求从外部临时IP重定向到我的群集节点(nginx)。
我在VM上部署了另一个Web应用程序,我想按VM和gke群集之间的子域平衡传入的请求。为此,我创建了一个具有2个后端以及主机和路径规则的全局负载平衡器。
我将DNS记录A配置为指向全局负载平衡器。
我可以从我的域访问VM,但无法访问GKE上安装的入口。
我尝试将gke-backend配置为实例组(节点池)和指向TCP负载平衡器的Internet网络端点组。但没有成功:-(
如何在GCP中的VM和GKE群集之间取得平衡?
答案 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。
这是我刚想到的快速解决方案