全部产品
Search
文档中心

容器服务 Kubernetes 版 ACK:ALB Ingress概述

更新时间:Aug 22, 2024

ALB Ingress基于阿里云应用型负载均衡ALB(Application Load Balancer)服务,为集群中的Service提供统一的入口。与Nginx Ingress相比,ALB Ingress的特点是全托管服务,您无需进行维护操作。它能自动检测Kubernetes集群中Ingress资源的变化,并根据预设规则将流量分配至后端服务。此外,ALB Ingress设计有较强的弹性伸缩机制,能够自动适应流量的动态变化,确保系统稳定运行。

阅读前提示

为了让您能更好地了解ALB Ingress的各种功能,建议您在使用ALB Ingress前阅读本文档。

阅读本文前,推荐您阅读Kubernetes官方Ingress文档了解Ingress及Ingress Class的基本概念。

ALB Ingress工作原理

ALB Ingress涉及到以下基本概念:

  • ALB Ingress Controller:负责管理Ingress资源的组件。它通过API Server动态地获取Ingress资源和AlbConfig资源的变化,然后更新ALB实例。与Nginx Ingress Controller不同,ALB Ingress Controller 是 ALB 实例的控制面,负责管理 ALB 实例,但不直接处理用户流量。用户流量的转发由 ALB 实例来实现。ALB Ingress Controller会通过集群API Server动态地获取Ingress资源的变化,并依照Ingress所描述的转发规则动态地更新ALB实例。

  • AlbConfig(CRD):AlbConfig是由ALB Ingress Controller创建的一种CRD (Custom Resource Definition) 。AlbConfig中的参数决定了ALB实例的配置。一个AlbConfig对应一个ALB实例。ALB实例是用户请求流量的入口,负责将用户请求转发到后端Service中。它由应用型负载均衡ALB完全托管。相比起Nginx Ingress Controller,ALB Ingress免于运维,并且拥有更强大的弹性。

  • IngressClass:IngressClass定义了某一个Ingress与某一个AlbConfig的关联。

  • Ingress:Ingress是Kubernetes中用于定义外部流量路由规则和访问规则的资源对象,ALB Ingress Controller通过监测Ingress资源的变化并更新ALB实例以实现流量转发。

  • Service:在Kubernetes中,Pod被认为是临时资源,是不稳定而多变的。Service为具有相同功能的Pod提供了一个稳定、统一的入口。其他应用程序或服务可以通过访问Service的虚拟IP和端口来与后端Pod进行通信,而无需关注Pod可能发生的变化。关于Service的详细介绍,请参见Service快速入门

您可参照下图,理解ALB实例与ALB Ingress之间的逻辑关系:

image

ALB Ingress使用流程

ALB Ingress与云原生服务做了深度集成,在具备丰富功能的同时也保证了易用性。使用ALB Ingress的操作流程如下:

image

您可以参见创建ALB Ingress,完成以上流程。

ALB Ingress的优势

ALB Ingress为全托管模式,提供更强大的Ingress流量管理能力。Nginx Ingress一般用于用户对网关定制有强烈需求的场景,需要您自行维护。Nginx Ingress和ALB Ingress在产品定位、架构、性能、安全等方面均存在差异。关于Nginx Ingress和ALB Ingress的差异对比,请参见Nginx Ingress和ALB Ingress对比

基于ALB Ingress和Nginx Ingress的差异,用户在实际使用过程中,这几种业务场景下ALB Ingress相比Nginx Ingress具有明显的优势。

  • 使用长连接的场景

    长连接适用于交互频繁的业务场景,如物联网IoT、互联网金融和在线游戏等。当用户进行配置变更时,Nginx Ingress由于需要Reload Nginx进程,会导致长连接闪断,ALB Ingress配置变更支持热更新,保持长连接稳定,有效避免此问题。

  • 高并发连接场景

    物联网业务由于终端设备数量大,往往具有高并发连接的特点。ALB Ingress依托洛神云网络平台,能高效管理会话(session),单个ALB实例即支持千万级连接数。Nginx Ingress支持的会话数有限,同时需要用户自行运维。Nginx Ingress扩容时需要消耗集群内的资源,并且还需要用户手动操作,扩容成本较高。

  • 高QPS场景

    互联网业务往往具有高QPS的特点,比如预期内的大促活动和突发的热点事件。ALB Ingress支持自动弹性,高QPS时会自动弹出更多VIP,通过一个ALB实例即可支持百万QPS,因此ALB Ingress拥有比Nginx Ingress更低的延迟。同时Nginx Ingress依赖集群内的资源,在高QPS场景中更可能会遭遇性能瓶颈。

  • 业务存在流量峰谷的场景

    对于有波峰波谷的业务,比如电商和游戏,ALB Ingress拥有费用优势。ALB Ingress按量计费,流量波谷期间消耗较少的LCU,产生的费用更低,且因为自动弹性,用户无需关注和应对自身业务流量模型。而使用Nginx Ingress时则需要预留一部分集群资源,在波谷时会产生闲置成本,并且还需要手动设置与预留资源。

ALB Ingress地域与可用区

ALB Ingress支持的地域与可用区,请参见ALB支持的地域与可用区

ALB Ingress配额限制

ALB Ingress的配额限制,请参见ALB配额计算方式

ALB Ingress Controller变更记录

ALB Ingress的功能变更记录,请参见ALB Ingress Controller