Ingress 作为 Kubernetes 集群中一种独立的资源,系统通过它来制定外部访问流量的转发规则,并通过 Ingress Controller 将其分配到一个或多个 Service 中。本文为您介绍容器服务支持的 Ingress 种类和区别。
Nginx Ingress
Nginx Ingress 是使用 Nginx 作为反向代理和负载均衡器的 Kubernetes 的 Ingress 控制器。您可以在集群中部署容器服务提供的 Nginx Ingress 组件:ingress-nginx,实现七层负载均衡。
容器服务通过 Nginx Ingress 对接结合四层的网络负载均衡器 CLB ,在云端实现了完整的四、七层负载能力:
- 容器服务集群以组件化的方式提供 ingress-nginx 组件,有七层负载功能需求的用户需要安装组件。
- ingress-nginx 组件安装完成后,集群的中节点上会对应运行有 Nginx Ingress 实例。
- 通过在路由规则中配置负载均衡器的 ingress 类型 为 ingress-nginx,实现 Nginx Ingress 的七层应用负载功能。
CLB Ingress
说明
ALB Ingress 提供更加丰富的功能和可靠性,为保障您业务的安全和稳定,建议在集群中优先选择 ALB Ingress 实现业务发布。
CLB(Cloud Load Balancer)是一种将访问流量按策略分发给多台后端服务器的服务,可以扩展系统对外服务能力,消除单点故障,从而提高系统的整体可用性。
- 用户创建 Ingress 资源,在 Ingress 中配置流量访问转发规则,包括负载均衡器、URL、SSL 以及访问的后端(Backend)Service 端口等。
- Ingress Controller 实现 Ingress,当监听到 Ingress 资源发生变化时,就会根据其中定义的流量转发规则,在 CLB 侧重新配置监听器以及转发规则。
- 当用户进行访问时,CLB 根据配置的转发策略把流量转发到对应的后端服务器 Service 端口,最终访问到关联的各个工作负载。
ALB Ingress
火山引擎应用型负载均衡(Application Load Balancer,ALB)专门面向七层设计,提供超强的业务处理性能。针对应用层网站、音视频应用等大流量分发场景,可以实现精细均衡的流量调度、消除单站点故障影响。火山引擎 ALB 支持 HTTP、HTTPS、HTTP/2、WebSocket、QUIC 等多种应用层协议接入,满足不同业务类型需求。
- 通过在路由规则中配置负载均衡器的 ingress 类型 为 应用型负载均衡 ALB,配置流量访问转发规则,包括负载均衡器、URL、TLS 以及访问的后端(Backend)Service 端口等。
- ALB Ingress Controller 通过 API Server 获取 Ingress 资源的变化。
- 当监听到 Ingress 资源发生变化时,就会根据其中定义的流量转发规则,在 ALB 侧重新配置监听器以及转发规则。
- 当用户进行访问时,ALB 根据配置的转发策略把流量转发到对应的后端服务器 Service 端口,最终访问到关联的各个工作负载。
APIG Ingress
火山引擎 API 网关(API Gateway,APIG)是基于云原生的、高扩展、高可用的云上网关托管服务。在传统流量网关的基础上,集成丰富的服务发现和服务治理能力,打通微服务架构的内外部网络,快速实现各服务之间、服务与客户端之间的安全通信。火山引擎 API 网关支持 HTTP、HTTPS 等应用层协议接入,满足不同业务类型需求。
- 通过在路由规则中配置负载均衡器的 ingress 类型 为 API 网关 APIG,配置流量访问转发规则,包括 URL、TLS 以及访问的后端(Backend)Service 端口等。
- APIG Ingress Controller 通过 API Server 获取 Ingress 资源的变化。
- 当监听到 Ingress 资源发生变化时,就会根据其中定义的流量转发规则,在 APIG 侧配置转发规则。
- 当用户进行访问时,APIG 根据配置的转发策略,直接把流量转发到对应的后端 Pod。