适用于GKE的Google Cloud HTTP负载均衡器(第7层)

问题描述:

我在使用HTTP负载均衡器(第7层)和GKE中的服务时遇到问题。我原本暴露GKE服务使用负载平衡器服务类型:适用于GKE的Google Cloud HTTP负载均衡器(第7层)

kubectl暴露部署为MyService --type =“负载平衡器”

这将为我在同一个区域集群创建一个公共IP地址,它一直运作良好。我的目标是为我的服务使用SSL支持的全球IP地址。这是我曾尝试:

  1. 暴露GKE服务为NodePort类型 kubectl暴露部署为MyService --type =“节点类型”
  2. 按照教程here创建入口对象。它不起作用,因为GKE中的服务已经在受管实例组中,并且入口对象将创建一个实例为零的新实例组。我发现讨论here
  3. 按照讨论中的建议。删除到入口对象,并尝试从谷歌云控制台手动设置HTTP负载平衡器。
    • 添加了防火墙规则,允许在所有目标上的端口80和8081(我的服务端口)上使用130.211.0.0/22。
    • 后端服务是由GKE创建的托管实例组。
    • 在端口8081,path/health上创建健康检查。 它仍然不起作用,因为负载均衡器可以识别受管实例组中正确的实例数量,但没有健康的节点。我的服务有一个运行状况检查终端myservice:8081/health,并且根路径“/”也返回HTTP 200 OK。我玩了健康检查配置,但负载平衡器永远找不到一个健康的节点。

我在想什么?

+0

难道最简单的方法是: 1.使用nginx服务器创建一个部署,您可以在其中配置SSL连接。它会将请求路由到您的其他服务。 2.在nginx部署周围创建一个类型为LoadBalancer的服务,它将为您提供公共IP。 –

+0

这可能会帮助你http://*.com/questions/40136891/gcloud-ingress-loadbalancer-static-ip。如果你使用入口并开始使用kube-lego(如果letsencrypt已经足够),你会对它变得多么容易感到惊讶 – Ben

事实证明,如果我想遵循入口教程,我无法在同一端点上定义HTTP(S)负载均衡器。您可以选择遵循教程并让入口对象自动定义LB,这在删除我的测试LB之后适用于我,或者不使用入口并手动定义LB(我从未得到它)。