全部產品
Search
文件中心

Container Service for Kubernetes:通過ALB Ingress實現混合掛載、跨地區掛載和本地IDC掛載

更新時間:Jun 19, 2024

ALB Ingress支援使用alb.ingress.kubernetes.io/actions.<服務名稱>註解配置後端轉寄伺服器組。後端轉寄伺服器組支援通過服務名稱或伺服器組ID掛載,實現K8s叢集內Pod和叢集外ECS執行個體混合掛載。通過ALB和雲企業網CEN(Cloud Enterprise Network)轉寄路由器等產品的組合配置,可以使ALB將請求轉寄至其他地區VPC內的伺服器,實現跨地區掛載。或使ALB將請求轉寄到本地IDC伺服器,實現本地IDC掛載。本文介紹如何通過ALB Ingress實現混合掛載、跨地區掛載和本地IDC掛載。

索引

注意事項

  • alb.ingress.kubernetes.io/actions.<服務名稱>註解中的服務名稱必須和rule欄位backend服務名稱保持一致。

  • 配置後端轉寄伺服器組時,rule欄位backend下的服務連接埠名稱需要為use-annotation

  • 使用alb.ingress.kubernetes.io/actions.<服務名稱>註解支援將多個伺服器組掛載在ALB執行個體上。

  • 基礎版ALB執行個體最多掛載5個伺服器組。

  • 同時通過ServerGroupIDServiceName+ServicePort掛載伺服器組時,優先根據ServerGroupID匹配後端伺服器組。

情境一:請求轉寄至ACK或ACK Serverless叢集內多個Service

前提條件

情境樣本

如下圖所示,ALB Ingress多伺服器組轉寄動作,支援通過配置ServiceName+ServicePort建立或掛載多個後端伺服器組,將請求轉寄至叢集內多個Service。

情境一

操作步驟

  1. 配置ALB Ingress。

    部署以下內容到tea-ingress.yaml檔案中。在定義請求服務時,將請求轉寄至叢集內多個Service。

    # 將請求根據主機名稱和路徑轉寄到不同的後端服務組,並按照權重進行流量分配。
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: tea-ingress
      annotations:
        alb.ingress.kubernetes.io/actions.forward: |
           [{
               "type": "ForwardGroup",
               "ForwardConfig": {
                 "ServerGroups" : [{
                   "ServiceName": "tea-svc",
                   "Weight": 80,
                   "ServicePort": 80
                 },
                 {
                   "ServiceName": "coffee-svc",
                   "Weight": 20,
                   "ServicePort": 80
                 }]
               }
           }]
    spec:
      ingressClassName: alb
      rules:
       - host: demo.domain.ingress.top
         http:
          paths:
          - path: /path
            pathType: Prefix
            backend:
              service:
                name: forward
                port:
                  name: use-annotation
  2. 通過命令列方式訪問服務。具體操作,請參見訪問服務

情境二:請求同時轉寄至ACK或ACK Serverless叢集內Pod及叢集外ECS

前提條件

情境樣本

如下圖所示,ALB Ingress多伺服器組轉寄動作支援您在ALB控制台或OpenAPI建立伺服器組,將當前VPC網路中的ECS執行個體掛載在伺服器組,通過擷取伺服器組ID並在Ingress上配置,將請求同時轉寄至叢集內Pod和叢集外ECS,實現ECS執行個體和K8s叢集混合掛載。

image.png

操作步驟

  1. 配置ALB Ingress。

    部署以下內容到tea-ingress.yaml檔案中。在定義請求服務時,同時將請求轉寄至叢集內Pod和叢集外ECS。

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: tea-ingress
      annotations:
        alb.ingress.kubernetes.io/actions.forward: |
           [{
               "type": "ForwardGroup",
               "ForwardConfig": {
                 "ServerGroups" : [{
                   "ServiceName": "tea-svc",
                   "Weight": 30,
                   "ServicePort": 80
                 },
                 {
                   "ServiceName": "coffee-svc",
                   "Weight": 20,
                   "ServicePort": 80
                 },
                 {
                   "ServerGroupID": "sgp-71aexb9y93ypo*****",
                   "Weight": 30
                 },
                 {
                   "ServerGroupID": "sgp-slygpbvm2cydo*****",
                   "Weight": 20
                 }]
               }
           }]
    spec:
      ingressClassName: alb
      rules:
       - host: demo.domain.ingress.top
         http:
          paths:
          - path: /path
            pathType: Prefix
            backend:
              service:
                name: forward
                port:
                  name: use-annotation
  2. 通過命令列方式訪問服務。具體操作,請參見訪問服務

情境三:請求轉寄至叢集內Pod以及叢集外跨地區VPC上的ECS

前提條件

  • 已分別在兩個不同的地區建立Virtual Private Cloud,並在VPC內建立處於不同可用性區域的交換器VSW。例如,在西南1(成都)地區建立Virtual Private Cloud1,在華東1(杭州)建立Virtual Private Cloud2。

    • 在VPC1內建立交換器VSW1和VSW2。VSW1位於可用性區域A,VSW2位於可用性區域B。

    • 在VPC2內建立交換器VSW3和VSW4。VSW3位於可用性區域H,VSW4位於可用性區域I。

    關於如何建立專用網路和交換器,請參見建立和管理專用網路建立和管理交換器

  • 已在VPC1內建立ACK或ACK Serverless叢集,並在ACK或ACK Serverless叢集通過ALBConfig建立ALB執行個體。具體操作,請參見建立Kubernetes託管版叢集ALB Ingress快速入門

  • 已在VPC2內至少建立一台Elastic Compute Service(Elastic Compute Service),並且在ECS中部署Web服務。具體操作,請參見自訂購買執行個體手動部署LNMP環境(Alibaba Cloud Linux 2/3)

  • 已建立雲企業網執行個體,並為該雲企業網執行個體購買頻寬包。具體操作,請參見雲企業網執行個體購買頻寬包

  • 已在西南1(成都)和華東1(杭州)地區,分別建立轉寄路由器執行個體。具體操作,請參見建立轉寄路由器執行個體

情境樣本

如下圖所示,ALB Ingress多伺服器組轉寄動作支援您在ALB控制台或OpenAPI建立伺服器組,通過雲企業網CEN建立跨地區VPC串連,將跨地區VPC網路中的ECS執行個體掛載在伺服器組。擷取伺服器組ID並在Ingress上配置,將請求同時轉寄至叢集內Pod和叢集外跨地區VPC上的ECS執行個體,實現跨地區掛載伺服器。

情境三

例如,ACK或ACK Serverless叢集已在阿里雲西南1(成都)地區VPC1專用網路中,通過ALB Config在該專用網路中建立ALB執行個體。使用者通過ALB、CEN等產品組合配置,將訪問請求轉寄至跨地區(阿里雲華東1(杭州)地區)線下VPC2內的ECS執行個體上。

異地掛載

操作步驟

  1. 配置雲企業網CEN,建立跨地區VPC串連。

    具體操作,請參見使用ALB掛載跨地區VPC內的伺服器

    說明

    ALB Ingress使用者無需在ALB控制台為ALB執行個體配置監聽,在步驟3通過ALB Ingress配置監聽。

  2. 將跨地區VPC內Elastic Compute Service添加到ALB伺服器組中。

    具體操作,請參見添加後端伺服器

  3. 通過alb.ingress.kubernetes.io/actions.<服務名稱>註解配置轉寄動作,掛載已建立好的指定伺服器組。定義請求服務時,將請求轉寄至叢集內Pod及叢集外跨地區VPC的ECS伺服器。

    部署以下內容到tea-ingress.yaml檔案中。

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: tea-ingress
      annotations:
        alb.ingress.kubernetes.io/actions.forward: |
           [{
               "type": "ForwardGroup",
               "ForwardConfig": {
                 "ServerGroups" :  [{
                   "ServiceName": "tea-svc",
                   "Weight": 30,
                   "ServicePort": 80
                 },
                 {
                   "ServiceName": "coffee-svc",
                   "Weight": 20,
                   "ServicePort": 80
                 },
                 {
                   "ServerGroupID": "sgp-71aexb9y93ypo*****",
                   "Weight": 30
                 },
                 {
                   "ServerGroupID": "sgp-slygpbvm2cydo*****",
                   "Weight": 20
                 }]
               }
           }]
    spec:
      ingressClassName: alb
      rules:
       - host: demo.domain.ingress.top
         http:
          paths:
          - path: /path
            pathType: Prefix
            backend:
              service:
                name: forward
                port:
                  name: use-annotation

情境四:請求轉寄至叢集內Pod及本地IDC伺服器

前提條件

注意事項

使用ALB掛載IDC伺服器的注意事項,請參見注意事項

情境樣本

如下圖所示,ALB Ingress多伺服器組轉寄動作支援您在ALB控制台或OpenAPI建立伺服器組,通過雲企業網CEN物理專線和邊界路由器VBR,將本地IDC伺服器掛載在伺服器組中。擷取伺服器組ID並在Ingress上配置,將請求同時轉寄至叢集內Pod和線下IDC伺服器,實現線下掛載伺服器。

情境四

例如,ACK或ACK Serverless叢集在阿里雲西南1(成都)地區VPC1專用網路中,通過ALB Config在該專用網路中建立ALB執行個體。您可通過ALB、CEN、VBR物理專線等產品組合配置,將訪問請求轉寄至該地區的IDC伺服器中。如下圖所示。

掛載本地IDC

操作步驟

  1. 配置雲企業網CEN,將ALB執行個體所在VPC1和VBR串連至轉寄路由器,本地IDC通過VBR接入阿里雲網路。具體操作,請參見使用ALB掛載同地區IDC伺服器

    說明

    ALB Ingress使用者不需要在ALB控制台為ALB執行個體配置監聽,在步驟2通過ALB Ingress配置監聽。

  2. 通過alb.ingress.kubernetes.io/actions.<服務名稱>註解配置轉寄動作,掛載已建立好的指定伺服器組。定義請求服務時,將請求轉寄至叢集內Pod及叢集外線下IDC伺服器。

    部署以下內容到tea-ingress.yaml檔案中。

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: tea-ingress
      annotations:
        alb.ingress.kubernetes.io/actions.forward: |
           [{
               "type": "ForwardGroup",
               "ForwardConfig": {
                 "ServerGroups" :  [{
                   "ServiceName": "tea-svc",
                   "Weight": 30,
                   "ServicePort": 80
                 },
                 {
                   "ServiceName": "coffee-svc",
                   "Weight": 20,
                   "ServicePort": 80
                 },
                 {
                   "ServerGroupID": "sgp-ihydxb9y93ypo*****",
                   "Weight": 30
                 },
                 {
                   "ServerGroupID": "sgp-pd0ipbvm2cydo*****",
                   "Weight": 20
                 }]
               }
           }]
    spec:
      ingressClassName: alb
      rules:
       - host: demo.domain.ingress.top
         http:
          paths:
          - path: /path
            pathType: Prefix
            backend:
              service:
                name: forward
                port:
                  name: use-annotation