ALB多集群網(wǎng)關(guān)概述
ACK One ALB多集群網(wǎng)關(guān)是ALB Ingress的多集群模式,其使用方式與ALB Ingress的單集群模式基本相似,但也存在一些差異。本文將介紹多集群ALB Ingress的相關(guān)信息。
ALB Ingress
ALB Ingress基于阿里云應(yīng)用型負載均衡ALB(Application Load Balancer)服務(wù),為集群中的Service提供統(tǒng)一的入口。與Nginx Ingress相比,ALB Ingress的特點是全托管服務(wù),您無需進行維護操作。它能自動檢測Kubernetes集群中Ingress資源的變化,并根據(jù)預(yù)設(shè)規(guī)則將流量分配至后端服務(wù)。此外,ALB Ingress設(shè)計有較強的彈性伸縮機制,能夠自動適應(yīng)流量的動態(tài)變化,確保系統(tǒng)穩(wěn)定運行。您可參照下圖,理解ALB實例與ALB Ingress多集群形態(tài)之間的邏輯關(guān)系。
ALB Ingress Controller:負責(zé)管理Ingress資源的組件。它通過集群API Server動態(tài)地獲取Ingress資源的變化,并依照Ingress所描述的轉(zhuǎn)發(fā)規(guī)則動態(tài)地更新ALB實例。ALB Ingress Controller是ALB實例的控制面,負責(zé)管理ALB實例,但不直接處理用戶流量。用戶流量的轉(zhuǎn)發(fā)由ALB實例來實現(xiàn)。
AlbConfig(CRD):AlbConfig是由ALB Ingress Controller創(chuàng)建的一種CRD (Custom Resource Definition) 。AlbConfig中的參數(shù)決定了ALB實例的配置。一個AlbConfig對應(yīng)一個ALB實例。ALB實例是用戶請求流量的入口,負責(zé)將用戶請求轉(zhuǎn)發(fā)到后端Service中。它由應(yīng)用型負載均衡ALB完全托管。相比于Nginx Ingress Controller,ALB Ingress免于運維,并且擁有更強大的彈性。
IngressClass:Ingress Class是Kubernetes Ingress資源的一個屬性,用于定義Ingress Controller的類別或標(biāo)識。它允許在集群中同時使用多個Ingress Controller,并為每個Ingress資源指定使用的特定Controller。
Ingress:Ingress是Kubernetes中用于定義外部流量路由規(guī)則和訪問規(guī)則的資源對象,ALB Ingress Controller通過監(jiān)測Ingress資源的變化并更新ALB實例以實現(xiàn)流量轉(zhuǎn)發(fā)。
Service:在Kubernetes中,Pod被視為臨時和不穩(wěn)定的資源,而Service為具有相同功能的Pod提供了一個穩(wěn)定、統(tǒng)一的入口。其他應(yīng)用程序或服務(wù)可以通過訪問Service的虛擬IP和端口來與后端Pod進行通信,而無需關(guān)注Pod可能發(fā)生的變化。關(guān)于Service的詳細介紹,請參見Service快速入門。
AlbConfig配置
在多集群模式下,AlbConfig增加了Annotation alb.ingress.kubernetes.io/remote-clusters
,以表示待添加要處理流量的關(guān)聯(lián)集群到ALB實例。以下AlbConfig為創(chuàng)建多集群網(wǎng)關(guān)的基礎(chǔ)配置。
詳細的AlbConfig字段說明,請參見AlbConfig字段。
更多使用AlbConfig配置ALB實例的能力,請參見配置ALB實例與監(jiān)聽。
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: ackone-gateway-demo
annotations:
# 添加要處理流量的關(guān)聯(lián)集群到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
需要同步的參數(shù)及其說明如下表所示:
參數(shù) | 是否必填 | 說明 |
| 是 | AlbConfig的名稱。 |
| 是 | 表示待添加到ALB多集群網(wǎng)關(guān)的關(guān)聯(lián)集群列表。此處所填的是已經(jīng)關(guān)聯(lián)到艦隊實例的集群ID。 |
| 否 | ALB實例的名稱。 |
| 否 | ALB實例的網(wǎng)絡(luò)類型。取值如下:
|
| 是 | 設(shè)置ALB交換機ID。創(chuàng)建交換機具體操作請參見創(chuàng)建和管理交換機。 說明
|
| 否 | 配置ALB的監(jiān)聽端口和協(xié)議。本文配置示例為端口8001的HTTP監(jiān)聽。 監(jiān)聽定義了流量進入負載均衡的方式和規(guī)則,此處建議保留該配置,否則您需要另行創(chuàng)建監(jiān)聽才可使用ALB Ingress。 |
Ingress配置
多集群ALB Ingress與單集群的ALB Ingress配置基本相同,但是多集群按權(quán)重切分流量和灰度功能無法同時使用。
Annotation相關(guān)說明,請參見Ingress支持的Annotation。
更多配置Ingress的場景,請參見配置Ingress。