有了 LoadBalancer 为什么要使用 ingress 来公开服务?

有了 LoadBalancer 为什么要使用 ingress 来公开服务?

我一直在研究 Kubernetes 如何向外界暴露服务,并发现了很多文章解释使用 NodePort、LoadBalancer 和 Ingress 之间的区别。

然而,似乎没有人解释一个非常基本的问题:在什么用例中你实际上会使用入口控制器?文章将这三种方法描述为公开服务的等效方法,但事实并非如此。NP 和 LB 是服务类型。入口控制器是一种可用于将流量负载平衡到其他服务的服务,但它仍然只是一种服务,这意味着您需要配置一个负载平衡器(不鼓励使用 Nodeport,因此在本次讨论中我将忽略它)来公开它。

所以我们现在有一个外部负载均衡器,指向一个内部负载均衡器服务,最终指向我们想要公开的实际服务。

我们重复了功能,但没有任何好处,因为您现在正在支付外部负载平衡器的费用,并且您的集群正在浪费周期来运行冗余的负载平衡服务。

各个云提供商提供的外部负载均衡器已经包含路径路由等功能,那么为什么还要费心使用入口呢?

我能想到的唯一适合使用它的情况是:

  • 尝试根据集群内流量平衡服务负载
  • 您希望将外部流量路由到多个主机名(而不是路径),但不希望每个主机名都有单独的外部 LB。(例如:使用 AWS NLB 接受所有流量,然后将其转发到入口控制器进行整理)
  • 你正在尝试模拟复杂的多 LB 环境,但没有办法运行多个实际的负载均衡器(例如:在笔记本电脑上使用 minikube)

我是否拥有这个权利,或者我是否遗漏了什么?

相关内容