全部產品
Search
文件中心

Container Service for Kubernetes:管理多叢集網關

更新時間:Jun 19, 2024

本文介紹如何在ACK One Fleet執行個體中開啟和關閉多叢集網關,以及如何將關聯集群添加至多叢集網關。

計費說明

使用多叢集網關會產生一定的費用,關於多叢集網關的計費資訊,請參見普通執行個體計費概述

前提條件

  • 已完成MSE雲原生網關授權

  • 已完成RAM使用者AliyunAdcpManagedMseRole授權。關於角色AliyunAdcpManagedMseRole的策略AliyunAdcpManagedMseRolePolicy詳情如下。

    展開查看AliyunAdcpManagedMseRolePolicy策略詳情

    {
        "Statement": [
            {
                "Action": [
                    "mse:AddBlackWhiteList",
                    "mse:AddGateway",
                    "mse:AddServiceSource",
                    "mse:CreateApplication",
                    "mse:DeleteGateway",
                    "mse:DeleteServiceSource",
                    "mse:GetBlackWhiteList",
                    "mse:GetGateway",
                    "mse:GetGatewayDetail",
                    "mse:GetGatewayOption",
                    "mse:ListServiceSource",
                    "mse:ListTagResources",
                    "mse:ModifyLosslessRule",
                    "mse:TagResources",
                    "mse:UntagResources",
                    "mse:UpdateBlackWhiteList",
                    "mse:UpdateGatewayOption",
                    "mse:UpdateServiceSource"
                ],
                "Resource": "*",
                "Effect": "Allow"
            },
            {
                "Action": [
                    "log:CloseProductDataCollection",
                    "log:OpenProductDataCollection",
                    "log:GetProductDataCollection"
                ],
                "Resource": [
                    "acs:mse:*:*:instance/*",
                    "acs:log:*:*:project/*/logstore/mse_*"
                ],
                "Effect": "Allow"
            },
            {
                "Action": "ram:CreateServiceLinkedRole",
                "Resource": "*",
                "Condition": {
                    "StringEquals": {
                        "ram:ServiceName": [
                            "audit.log.aliyuncs.com"
                        ]
                    }
                },
                "Effect": "Allow"
            }
        ],
        "Version": "1"
    }
  • 已開啟艦隊管理功能,並從ACK One控制台擷取Fleet執行個體的KubeConfig,通過kubectl串連至Fleet執行個體。

  • 已添加關聯集群,且關聯集群與ACK One Fleet執行個體處於同一VPC。

  • 已安裝最新版本阿里雲CLI配置阿里雲CLI

開啟多叢集網關

通過控制台開啟

  1. 登入ACK One控制台,在左側導覽列選擇艦隊 > 多叢集網關

  2. 多叢集網關頁面單擊開啟多叢集網關,然後在彈出的對話方塊中單擊確定

通過命令列開啟

  1. 確認阿里雲CLI為最新版本後,執行以下命令開啟多叢集網關。

    替換以下<your_fleet_clusterid>為您的Fleet執行個體ID。

    aliyun adcp UpdateHubClusterFeature --ClusterId <your_fleet_clusterid> --GatewayEnabled true
  2. 執行以下命令,查看多叢集網關功能的開啟狀態。

    aliyun adcp DescribeHubClusterDetails --ClusterId <your_fleet_clusterid> |grep -B4 -A1 EnabledMSE`

    預期輸出如下:StatusTrue表示多叢集網關成功開啟。

    			{
    				"Message": "",
    				"Reason": "",
    				"Status": "True",
    				"Type": "EnabledMSE"
    			},

建立多叢集網關

通過控制台建立

  1. 登入ACK One控制台,在左側導覽列選擇艦隊 > 多叢集網關

  2. 多叢集網關頁面右上方單擊建立網關

  3. 在彈出的面板中,根據實際情況修改建立多叢集網關的YAML檔案,然後單擊建立。

通過命令列建立

  1. 擷取ACK One Fleet執行個體的虛擬交換器ID並記錄。

    1. 執行以下命令,擷取交換器執行個體ID。

    aliyun adcp DescribeHubClusterDetails --ClusterId <your_fleet_clusterid>
    1. 從預期輸出的VSwitches中複製一個交換器執行個體ID。

  2. 使用以下內容,建立mseingressconfig.yaml檔案。

    替換以下${vsw-id1}為您上一步擷取的交換器ID。您也可以在建立網關時,通過添加Annotation同步指定待添加到多叢集網關的關聯集群。

    apiVersion: mse.alibabacloud.com/v1alpha1
    kind: MseIngressConfig
    metadata:
      name: ackone-gateway
      # 添加關聯集群到MSE網關。
      #annotations:
      #  mse.alibabacloud.com/remote-clusters: ${cluster1},${cluster2}
    spec:
      common:
        instance:
          replicas: 3
          spec: 2c4g
        network:
          # 公網SLB和內網SLB,可都配置,如果2個欄位都不配置則預設使用公網SLB。
          #publicSLBSpec: slb.s2.small
          #privateSLBSpec: slb.s2.small
          vSwitches:
          - ${vsw-id1}
      ingress:
        local:
          ingressClass: mse
      name: mse-ingress
  3. 執行以下命令,在ACK One Fleet執行個體中建立一個名為mse-ingress的網關。

    kubectl apply -f mseingressconfig.yaml
  4. 執行以下命令,驗證網關是否建立成功。

    kubectl get mseingressconfig ackone-gateway

    預期輸出:

    NAME             STATUS      AGE
    ackone-gateway   Listening   3m15s

    預期輸出中網關狀態為Listening,表明雲原生網關建立成功處於運行狀態,並自動監聽叢集中IngressClass為mse的Ingress資源。

    通過MseIngressConfig建立的多叢集網關會按照Pending、Running、Listening的狀態依次變化。各狀態說明如下:

    • Pending:表明雲原生網關正在建立中,需等待3分鐘左右。

    • Running:表明雲原生網關建立成功,並處於運行狀態。

    • Listening:表明雲原生網關處於運行狀態,並監聽叢集中Ingress資源。

    • Failed:表明雲原生網關處於非法狀態,可以查看Status欄位中的Message來進一步明確原因。

在多叢集網關中添加或刪除關聯集群

通過控制台添加或刪除

  1. 登入ACK One控制台,在左側導覽列選擇艦隊 > 多叢集網關

  2. 多叢集網關頁面上方的下拉框中選擇要修改的目標多叢集網關,然後在頁面右上方單擊編輯

  3. 在彈出的面板中修改MseIngresConfig.yaml檔案,修改annotations參數中的叢集ID,然後單擊更新

    樣本如下:

    annotations:
      mse.alibabacloud.com/remote-clusters: ${cluster1-id},${cluster2-id}
    • ${cluster1-id}${cluster2-id}為添加的關聯集群的ID,多個關聯集群以英文半形逗號(,)間隔,您可以通過修改叢集ID來添加或刪除關聯的叢集。

    • 若建立多叢集網關時未添加關聯集群,則MseIngresConfig.yaml檔案中沒有annotations參數,添加關聯集群時,您需要將以上樣本添加到MseIngresConfig.yaml檔案的metadata對象中,再修改叢集ID。

通過命令列方式添加或刪除

  1. 在ACK One Fleet執行個體中,通過mseingressconfig對象的Annotation控制多叢集網關中添加或刪除關聯集群。替換以下${cluster1-id}${cluster2-id}為您待添加的關聯集群的ID,添加多個關聯集群時,中間以英文半形逗號(,)間隔。

    annotations:
      mse.alibabacloud.com/remote-clusters: ${cluster1-id},${cluster2-id}
  2. 執行以下命令,查看關聯集群是否已成功添加至多叢集網關。

    kubectl get mseingressconfig ackone-gateway -ojsonpath="{.status.remoteClusters}"

    預期輸出:

    [{"clusterId":"c7fb82****"},{"clusterId":"cd3007****"}]

    預期輸出中已包含指定的ClusterID,並且無Failed資訊,表明關聯集群已成功添加至多叢集網關。

  3. 執行以下命令,查看當前已添加到多叢集網關的關聯集群。

    kubectl get mseingressconfig ackone-gateway
  4. 執行以下命令,在已有的基礎上新增或刪除關聯集群。

    mse.alibabacloud.com/remote-clusters=${cluster1},${cluster2}表示待添加到多叢集網關的叢集列表。

    kubectl annotate mseingressconfig ackone-gateway mse.alibabacloud.com/remote-clusters=${cluster1},${cluster2} --overwrite=true

停用多叢集網關功能

重要
  • 刪除多叢集網關將會對業務產生影響,請謹慎操作。

  • 當您確定不再使用多叢集網關時,需要先刪除多叢集網關,再關閉多叢集網關功能,避免產生額外資損。

通過控制台停用

  1. 登入ACK One控制台,在左側導覽列選擇艦隊 > 多叢集網關

  2. 多叢集網關頁面上方的下拉框中選擇要刪除的目標多叢集網關,然後在頁面右上方單擊刪除

  3. 在彈出的對話方塊中輸入待刪除的多叢集網關的名稱,然後單擊刪除

  4. 確認ACK One Fleet執行個體下的所有多叢集網關都已刪除,然後在頁面右上方單擊關閉功能

  5. 在彈出的提示框中單擊確定

通過命令列停用

  1. 執行以下命令,刪除多叢集網關。

    kubectl delete mseingressconfig ackone-gateway
  2. 執行以下命令,關閉多叢集網關功能。

    aliyun adcp UpdateHubClusterFeature --ClusterId <your_fleet_clusterid> --GatewayEnabled false