我对 Kubernetes 中 Ingress 和负载均衡器的作用感到很困惑。据我所知,Ingress 用于将来自互联网的传入流量映射到集群中运行的服务……
我对 Kubernetes 中 Ingress 和 Load Balancer 的作用感到很困惑。
据我了解,Ingress 用于将来自互联网的传入流量映射到集群中运行的服务。
负载均衡器的作用是将流量转发到主机。在这方面,入口与负载均衡器有何不同?此外,与 Amazon ELB 和 ALB 相比,kubernetes 内部的负载均衡器概念是什么?
在 Kubernetes 中, LoadBalancer 类型的 Service(SVC) 和 Ingress 都用于将集群内部运行的应用程序暴露给外部世界,但它们的用途不同,工作方式也不同。比较如下:
LoadBalancer 类型的服务:
目的:LoadBalancer 类型的服务用于使用外部负载均衡器(由 AWS、GCP 或 Azure 等云提供商提供)直接向外界公开一组特定的 Pod(通常是服务的一组副本)。
工作原理:当您创建 LoadBalancer 类型的服务时,Kubernetes 会请求云提供商配置外部负载均衡器。此负载均衡器会获取一个外部 IP,该 IP 将流量路由到您的 Kubernetes 服务,然后 Kubernetes 服务会将其转发到关联的 Pod。
用例:当您需要使用专用外部 IP 地址公开单个服务时很有用。非常适合需要直接公开访问的应用程序(例如单个 Web 应用程序或 API 服务)。
优点:
缺点:
入口:
目的:Ingress 是一种更强大、更灵活的方式,可通过单个入口点(如 HTTP 或 HTTPS 端点)公开多项服务。它允许您根据路径或主机定义将外部流量路由到内部服务的规则。
工作原理:Ingress 控制器(例如 NGINX)负责管理流量的路由。您可以创建一个 Ingress 资源,该资源定义了如何根据 URL 路径或主机名将流量引导到集群内各种服务的规则。
用例:非常适合复杂的应用程序,其中您拥有多个服务(例如,Web 应用程序、API 等),并且希望使用基于路径或子域的路由的单个 IP 地址或域来公开这些服务。
优点:
缺点: