ALB多集群网关概述

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多集群形态之间的逻辑关系。

image
  • 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为创建多集群网关的基础配置。

说明
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

需要同步的参数及其说明如下表所示:

参数

是否必填

说明

metadata.name

AlbConfig的名称。

metadata.annotations:

alb.ingress.kubernetes.io/remote-clusters

表示待添加到ALB多集群网关的关联集群列表。此处所填的是已经关联到舰队实例的集群ID。

spec.config.name

ALB实例的名称。

spec.config.addressType

ALB实例的网络类型。取值如下:

  • Internet(默认值):公网类型。面向公网提供应用型负载均衡服务,公网可访问。

    说明

    应用型负载均衡通过绑定弹性公网IP进行公网服务,使用公网类型ALB实例将收取弹性公网IP的实例费与带宽、流量费用,详情参见按量付费

    Intranet:私网类型。面向VPC内部提供应用型负载均衡服务,公网不可访问。

spec.config.zoneMappings

设置ALB交换机ID。创建交换机具体操作请参见创建和管理交换机

说明
  • 指定的交换机必须在ALB当前所支持的可用区内,且与集群处于同一VPC。关于ALB支持的地域与可用区,请参见ALB支持的地域与可用区

  • 应用型负载均衡支持多可用区部署,若当前地域支持2个及以上可用区,为保障业务高可用,请至少选择2个或以上不同可用区的交换机。

spec.listeners

配置ALB的监听端口和协议。本文配置示例为端口8001的HTTP监听。

监听定义了流量进入负载均衡的方式和规则,此处建议保留该配置,否则您需要另行创建监听才可使用ALB Ingress。

Ingress配置

多集群ALB Ingress与单集群的ALB Ingress配置基本相同,但是多集群按权重切分流量和灰度功能无法同时使用。