全部產品
Search
文件中心

Container Service for Kubernetes:ALB多叢集網關概述

更新時間:Nov 09, 2024

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設計有較強的Auto Scaling機制,能夠自動適應流量的動態變化,確保系統穩定運行。您可參照下圖,理解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為建立多叢集網關的基礎配置。

說明
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(預設值):公網類型。面向公網提供應用型負載平衡服務,公網可訪問。

    說明

    應用型負載平衡通過綁定Elastic IP Address進行公網服務,使用公網類型ALB執行個體將收取Elastic IP Address的執行個體費與頻寬、流量費用,詳情參見隨用隨付

    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配置基本相同,但是多叢集按權重切分流量和灰階功能無法同時使用。