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

kubernetes on gke / why a load balancer use is enforced?

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

在后期环境中,不需要任何特定的负载均衡器;使用 nginx-ingress 和 ingresses 让我们为 www.

提供服务

相反,在 gke 上,使用相同的 nginx-ingress,或使用 gke 提供的 l7,你总是以计费负载均衡器结束。

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

(转载我上面的评论)

一般来说,当一个人从外界接收流量时,该流量会被发送到一个或多个非 ACLd public IP 地址。

如果你在裸机上 运行 k8s,那些 BM 可以有 public IP,你可以 运行 进入其中一个或多个。

但是,出于安全原因,托管的 k8s 环境不允许节点拥有 public IP。

相反,托管负载均衡器允许具有 public 个 IP。这些被配置为知道托管集群入口的私有节点 IP,并将相应地引导流量。

Kubernetes 服务有几种类型,每一种都建立在前一种之上:ClusterIP、NodePort 和 LoadBalancer。只有最后一个会在云环境中提供 LoadBalancer,因此您可以在 GKE 上避免它而不会产生模糊。问题是,然后呢?因为,在最好的情况下,你最终会得到一个 Ingress(我假设我们在你的问题中公开了 ingress),它在易变的 IP 上可用(节点可以随时滚动,新的节点将获得新的 IP)和由给出的高端口节点端口服务。这意味着你不仅没有固定的 IP 可以使用,而且你还需要打开像 http://:31978 这样的东西,这显然是废话。因此,在云中,您有一个简单的解决方案,即在其前面放置一个具有 LoadBalancer 服务类型的云负载均衡器。此 LB 将摄取端口 80/443 上的流量并将其转发到正确的支持 service/pods.