了解 ALB
ALB 已弃用。请改用 ingress-nginx-operator 或 envoy-gateway。
ALB(Another Load Balancer)是由 OpenResty 驱动的 Kubernetes Gateway,融合了 Alauda 多年的生产实践经验。
目录
核心组件快速开始部署 ALB Operator部署 ALB 实例运行示例应用ALB、ALB Instance、Frontend/FT、Rule、Ingress 和 Project 之间的关系IngressIngress ControllerALBALB InstanceALB-OperatorFrontend(缩写:FT)RULEALB Leader项目其他资源:商标声明核心组件

- ALB Operator:用于管理 ALB 实例生命周期的 operator。它会监视 ALB CR,并为不同租户创建或更新实例。
- ALB Instance:ALB 实例包括充当数据平面的 OpenResty 和充当控制平面的 Go controller。Go controller 会监视各种 CR(Ingress、Gateway、Rule 等),并将其转换为 ALB 专用的 DSL 规则。随后,OpenResty 使用这些 DSL 规则匹配和处理传入请求。
快速开始
部署 ALB Operator
- 创建集群。
部署 ALB 实例
运行示例应用
现在,您可以通过 curl http://${ip} 访问该应用。
ALB、ALB Instance、Frontend/FT、Rule、Ingress 和 Project 之间的关系
LoadBalancer 是现代云原生架构中的关键组件,可充当智能流量路由器和负载均衡器。
要了解 ALB 在 Kubernetes 集群中的工作方式,我们需要了解几个核心概念及其相互关系:
- ALB 本身
- Frontend(FT)
- Rules
- Ingress 资源
- Projects
这些组件协同工作,提供灵活而强大的流量管理能力。
下面将介绍这些概念如何在请求路径中协同工作。每个概念的详细介绍请参阅单独的文章。
在请求调用链中:
- 客户端发送 HTTP/HTTPS/其他协议请求,最终请求将到达 ALB 的某个 pod,该 pod(一个 ALB 实例)将开始处理此请求。
- 此 ALB 实例查找能够匹配此请求的规则。
- 如有需要,根据规则修改、重定向或重写请求。
- 从规则配置的服务中查找并选择一个 pod IP,然后将请求转发到该 pod。
Ingress
Ingress 是 Kubernetes 中的一种资源,用于描述应将请求发送到哪个服务。
Ingress Controller
一种理解 Ingress 资源并将请求代理到服务的程序。
ALB
ALB 是一个 Ingress controller。
在 Kubernetes 集群中,我们使用 alb2 资源来操作 ALB。您可以使用 kubectl get alb2 -A 查看集群中的所有 ALB。
ALB 由用户手动创建。每个 ALB 都有自己的 IngressClass。创建 Ingress 时,可以使用 .spec.ingressClassName 字段来指示应由哪个 Ingress controller 处理此 Ingress。
ALB Instance
ALB 也是在集群中运行的 Deployment(一组 pod)。每个 pod 都称为一个 ALB 实例。
每个 ALB 实例独立处理请求,但所有实例共享属于同一 ALB 的 Frontend(FT)、Rule 和其他配置。
ALB-Operator
ALB-Operator 是部署在集群中的默认组件,是用于 ALB 的 operator。它会根据 ALB 资源为每个 ALB 创建、更新或删除 Deployment 及其他相关资源。
Frontend(缩写:FT)
FT 是由 ALB 自身定义的资源,用于表示 ALB 实例监听的端口。
FT 可以由 ALB-Leader 创建,也可以由用户手动创建。
ALB-Leader 创建 FT 的情况:
- 如果 Ingress 有证书,我们将创建 FT 443(HTTPS)。
- 如果 Ingress 没有证书,我们将创建 FT 80(HTTP)。
RULE
RULE 是由 ALB 自身定义的资源。
它与 Ingress 具有相同的作用,但更加具体。
一个 RULE 唯一关联一个 FT。
RULE 可以由 ALB-Leader 创建,也可以由用户手动创建。
ALB-Leader 创建 RULE 的情况:
- 将 Ingress 同步到 RULE。
ALB Leader
在多个 ALB 实例中,其中一个将被选举为 leader。
leader 负责:
- 将 Ingress 转换为 RULE。 我们将为 Ingress 中的每个路径创建一个 RULE。
- 创建 Ingress 所需的 FT。 例如,如果 Ingress 有证书,我们将创建 FT 443(HTTPS);如果 Ingress 没有证书,我们将创建 FT 80(HTTP)。
项目
从 ALB 的角度来看,项目是一组命名空间。
您可以在一个 ALB 中配置一个或多个项目。
当 ALB Leader 将 Ingress 转换为 RULE 时,它会忽略不属于该项目的命名空间中的 Ingress。
其他资源:
商标声明
Envoy® 是 The Linux Foundation 的注册商标。
NGINX® 是 F5, Inc. 在美国及其他国家/地区的注册商标。
Alauda 是一家独立的供应商。本产品与 The Linux Foundation 或 F5, Inc. 没有关联,也未获得其认可或赞助。所有商标均归其各自所有者所有,此处使用这些商标仅用于标识目的。