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為建立多叢集網關的基礎配置。
詳細的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。