当前位置: 首页 > 知识库问答 >
问题:

gke上的kubernetes/为什么强制使用负载平衡器?

羊舌光赫
2023-03-14

通过GKE进入kubernetes,目前正在裸机上通过kubeadm进行尝试。

在以后的环境中,不需要任何特定的负载平衡器;通过使用nginx入口和入口,可以为www提供服务。

相反,在gke上,使用相同的nginx入口,或者使用gke提供的l7,最终总是得到一个计费负载平衡器。

这似乎不是最终需要的,原因是什么?

共有2个答案

贡威
2023-03-14

Kubernetes服务有几种类型,每种都是在前一种服务的基础上建立起来的:ClusterIP、NodePort和LoadBalancer。只有最后一个将在云环境中提供LoadBalancer,因此您可以在GKE上避免它,而无需fuzz。问题是,然后呢?因为,在最好的情况下,您最终会得到一个入口(我假设我们像您的问题中那样公开入口),该入口在易失性IP(节点可以随时滚动,新节点将获得新IP)和NodePort服务提供的高端口上可用。这意味着不仅您没有固定的IP可供使用,而且您还需要打开http://:31978之类的东西,这显然是胡说八道。因此,在云中,您有一个简单的解决方案,即使用LoadBalancer服务类型将云负载平衡器放在其前面。此LB将接收端口80/443上的流量,并将其转发到正确的后备服务/POD。

徐经武
2023-03-14

(在上面转载我的评论)

通常,当一个人从外部世界接收流量时,该流量被发送到一个或多个非ACLd公共IP地址。

如果您在裸机上运行k8s,这些BM可以具有公共IP,并且您可以只在其中一个或多个上运行入口。

然而,出于安全原因,托管k8s环境不允许节点具有公共IP。

相反,托管负载平衡器允许具有公共IP。它们被配置为知道集群入口所在的私有节点IP,并将相应地引导流量。

 类似资料:
  • 我已经按照用户指南在库伯内特斯上实现了Traefik。这给了我一个入口控制器,我能够在80和8080上创建一个入口和traefik-ingress-service监听。 我还设置了“gce”入口: 这样做的目的是创建一个GCE负载平衡器,它终止我的TLS,并将所有请求转发给NodePort类型的traefik入口服务。 GCE负载平衡器需要进行健康检查。默认为路径“/”。我以为traefik有个“

  • 我们利用入口创建HTTPS负载平衡器,直接转发到我们的(通常是nodejs)服务。然而,最近我们希望对NodeJ前面的流量进行更多的控制,而Google负载平衡器没有提供这种控制。 标准化的自定义错误页面 标准重写规则(例如将超文本传输协议重定向到https) 将pod readinessProbes与负载均衡器健康检查解耦(因此当没有健康的pod时,我们仍然可以提供自定义错误页面)。 我们在堆栈

  • 试图自学如何使用库伯内特斯,但有一些问题。 我的下一步是尝试使用LoadBalancer类型的服务来访问nginx。 我建立了一个新的集群并部署了nginx映像。 然后,我为LoadBalancer设置服务 设置完成后,我尝试使用LoadBalancer入口(我在描述LoadBalancer服务时发现)访问nginx。我收到一个此页面无法工作的错误。 不太确定我哪里出错了。 kubectl获得sv

  • 我正在尝试部署一个Docker容器,它公开了一个简单的Docker服务器,它是Google容器引擎(库伯内特斯)中httpbin.org服务的克隆。 这是我正在使用的服务定义: 入口定义为: 在服务/入口仪表板中,我可以看到两个IP,一个直接绑定到服务(临时),另一个静态IP绑定到入口。直接在80号端口给他们两个打电话很有魅力。 完成后,我为静态IP创建了一个A记录,并确保GKE仪表板中的负载平衡

  • 如何在L7上的GKE上为GRPC服务进行负载平衡(通过HTTP/2 TLS进行入口)? 我知道我可以选择使用L4(TCP层)来配置具有“LoadBalancer”类型的服务。但是我想知道我是否可以通过HTTP/2 TLS使用入口L7负载平衡。 我还看到“GKE不支持HTTP/2到后端”(打开https://cloud.google.com/load-balancing/docs/backend-s

  • 我遵循了GKE教程,使用beta Inrit类型创建HTTP负载均衡器,并且在使用nginx映像时工作正常。我的问题是为什么Inrit是必要的。 我可以创建一个容器引擎集群,然后创建一个使用库伯内特斯创建的实例组作为服务后端的HTTP负载均衡器,并且一切似乎都运行良好。当仅在部分流程中使用库伯内特斯似乎运行良好时,为什么我要经历使用Inete的所有麻烦?