我已在 EKS 上部署了 Kubernetes 集群。我有一个 ingress-nginx,它通过负载均衡器公开,以将流量路由到不同的服务。在 ingress-nginx 中,第一个请求转到 auth 服务进行身份验证,如果它是有效请求,那么我允许它继续前进。 假设请求位于服务 1 中,现在它想要与服务 2 进行通信。因此,如果我希望我的请求直接进入入口而不是通过负载均衡器,然后从入口到达服务 2。
1/是否可能:简短回答,不。
在某些边缘情况下,需要有人首先创建另一个暴露 Service2 的 Ingress 对象。然后,您可以欺骗 Ingress 将您路由到某些可能无法访问的服务(如果 DNS 不存在,某些 VIP 尚未公开,...)
外部客户端绕过 ELB 并没有真正的问题,只要它们不能加入节点上的所有端口,而只能加入入口控制器绑定的端口。
2/绕过负载均衡器:在性能方面不会有太大变化。
如果我们谈论的是 TCP 负载均衡器,那么去掉它将有助于跟踪真实的客户端 IP。弄清楚如何为 HTTP 负载均衡器更改它可能会更好——尽管并不总是那么容易。
3/ 删除负载均衡器:如果您有多个节点托管增量控制器的副本,那么您仍然可以执行某种基于 DNS 的负载均衡。但可以肯定的是,这与拥有真正的 LB 不同。
在 AWS 中,您可以找到设置基于运行状况检查的 Route53 记录的中间立场:为托管入口控制器的每个节点设置一个记录,创建另一个重新分组所有健康入口节点,然后更改现有入口 FQDN 记录,以便它们全部指向添加到您的新 Route53 名称。您可以对 EC2 实例 IP 进行 TCP/HTTP 检查,这通常就足够了。但同样:DNS 负载平衡可能会受到过时的浏览器缓存、某些 ISP 不刷新区域的影响,...LB 是真实存在的。
当我问这个问题时,我还是个新手。
但答案是,您可以使用集群 IP 和负载均衡器公开您的私有入口控制器。
因此,来自 Kubernetes 集群外部的任何通信都可以通过负载均衡器进行,内部通信可以通过集群 IP 完成。但是,要访问私有入口负载均衡器,您需要通过将 IP 列入白名单来允许流量到达它。
值得注意的是Cluster IP确实具有负载均衡功能。虽然它可能不如专用负载均衡器那么强大,但我发现它为我的用例提供了更好的性能。