ACK One ALB多集群网关是ALB Ingress的多集群模式,其使用方式与ALB Ingress的单集群模式基本相似,但也存在一些差异。本文将介绍多集群ALB Ingress的相关信息。
ALB Ingress
ALB Ingress基于阿里云应用型负载均衡ALB(Application Load Balancer)服务,为集群中的Service提供统一的入口。与Nginx Ingress相比,ALB Ingress的特点是全托管服务,您无需进行维护操作。它能自动检测Kubernetes集群中Ingress资源的变化,并根据预设规则将流量分配至后端服务。此外,ALB Ingress设计有较强的弹性伸缩机制,能够自动适应流量的动态变化,确保系统稳定运行。您可参照下图,理解ALB实例与ALB Ingress多集群形态之间的逻辑关系。
ALB Ingress Controller:负责管理Ingress资源的组件。它通过集群API Server动态地获取Ingress资源的变化,并依照Ingress所描述的转发规则动态地更新ALB实例。ALB Ingress Controller是ALB实例的控制面,负责管理ALB实例,但不直接处理用户流量。用户流量的转发由ALB实例来实现。
AlbConfig(CRD):AlbConfig是由ALB Ingress Controller创建的一种CRD (Custom Resource Definition) 。AlbConfig中的参数决定了ALB实例的配置。一个AlbConfig对应一个ALB实例。ALB实例是用户请求流量的入口,负责将用户请求转发到后端Service中。它由应用型负载均衡ALB完全托管。相比于Nginx Ingress Controller,ALB Ingress免于运维,并且拥有更强大的弹性。
IngressClass:Ingress Class是Kubernetes Ingress资源的一个属性,用于定义Ingress Controller的类别或标识。它允许在集群中同时使用多个Ingress Controller,并为每个Ingress资源指定使用的特定Controller。
Ingress:Ingress是Kubernetes中用于定义外部流量路由规则和访问规则的资源对象,ALB Ingress Controller通过监测Ingress资源的变化并更新ALB实例以实现流量转发。
Service:在Kubernetes中,Pod被视为临时和不稳定的资源,而Service为具有相同功能的Pod提供了一个稳定、统一的入口。其他应用程序或服务可以通过访问Service的虚拟IP和端口来与后端Pod进行通信,而无需关注Pod可能发生的变化。关于Service的详细介绍,请参见Service快速入门。
AlbConfig配置
在多集群模式下,AlbConfig增加了Annotation alb.ingress.kubernetes.io/remote-clusters
,以表示待添加要处理流量的关联集群到ALB实例。以下AlbConfig为创建多集群网关的基础配置。
详细的AlbConfig字段说明,请参见AlbConfig字段。
更多使用AlbConfig配置ALB实例的能力,请参见配置ALB实例与监听。
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: ackone-gateway-demo
annotations:
# 添加要处理流量的关联集群到ALB多集群实例。
alb.ingress.kubernetes.io/remote-clusters: ${cluster1},${cluster2}
spec:
config:
name: one-alb-demo
addressType: Internet
addressAllocatedMode: Fixed
zoneMappings:
- vSwitchId: ${vsw-id1}
- vSwitchId: ${vsw-id2}
listeners:
- port: 8001
protocol: HTTP
需要同步的参数及其说明如下表所示:
参数 | 是否必填 | 说明 |
| 是 | AlbConfig的名称。 |
| 是 | 表示待添加到ALB多集群网关的关联集群列表。此处所填的是已经关联到舰队实例的集群ID。 |
| 否 | ALB实例的名称。 |
| 否 | ALB实例的网络类型。取值如下:
|
| 是 | 设置ALB交换机ID。创建交换机具体操作请参见创建和管理交换机。 说明
|
| 否 | 配置ALB的监听端口和协议。本文配置示例为端口8001的HTTP监听。 监听定义了流量进入负载均衡的方式和规则,此处建议保留该配置,否则您需要另行创建监听才可使用ALB Ingress。 |
Ingress配置
多集群ALB Ingress与单集群的ALB Ingress配置基本相同,但是多集群按权重切分流量和灰度功能无法同时使用。
Annotation相关说明,请参见Ingress支持的Annotation。
更多配置Ingress的场景,请参见配置Ingress。