全部產品
Search
文件中心

Alibaba Cloud Service Mesh:使用ASM遠端控制面降低推送延遲

更新時間:Dec 03, 2024

ASM支援部署遠端控制面,您可以選擇將控制面組件部署至您的非阿里雲叢集中,使得該叢集中的網格代理可以直連遠端控制面,提升配置推送效率,降低推送延遲。本文介紹如何部署遠端控制面。

背景資訊

資料面叢集均基於阿里雲VPC構建時,資料面工作負載可以通過阿里雲VPC網路直連ASM託管控制面,網路延遲低,控制面配置下發順暢,無需使用遠端控制面能力。

當資料面叢集位於其他雲端服務或線下資料中心,與ASM控制面通過公網或其他特殊方式連通,並且連通的網路環境不穩定或頻寬受限。此時推薦使用ASM遠端控制面來降低推送延遲。

遠端控制面對整體架構如下:

如果所有非ACK叢集中的Pod都直連託管ASM控制面,這意味著託管控制面和非ACK叢集之間的網路連接數量以及頻寬佔用將與Pod數量正相關。此時如果頻繁發生配置或服務變更,容易出現推送延遲的問題。

使用ASM遠端控制面能力後,遠端控制面為叢集的網格代理推送配置。ASM控制面和非ACK叢集之間將只有少量的用於控制面組件下發和服務發現的網路連接,這種方式能將大程度減少對於低延遲、高頻寬網路環境的需求,提升配置推送效率。

ASM遠端控制面使用注意事項

  • 使用ASM遠端控制面後,服務網格相關Kubernetes資源必須使用ASM的kubeconfig建立。如果使用遠程叢集的kubeconfig,該資源有被覆蓋的風險。

  • ASM提供了全域的服務發現。即被ASM託管控制面管理的工作負載可以訪問被遠端控制面管理的服務,並且預設使用mTLS通訊,支援ASM的東西向網關。

  • ASM遠端控制面與通過資料面KubeAPI訪問Istio資源功能衝突。開啟遠端控制面之前,請確保該功能處於關閉狀態。

前提條件

步驟一:開啟遠端控制面能力

  1. 使用ASM執行個體的kubeconfig,執行以下命令修改叢集中的ASMMeshConfig資源。

    kubectl edit ASMMeshconfig
  2. 將以下內容中的.spec.externalIstiodConfigurations配置到ASMMeshConfig中。

    apiVersion: istio.alibabacloud.com/v1beta1
    kind: ASMMeshConfig
    metadata:
      name: default
    spec:
      ......
      externalIstiodConfigurations:
        ${cluster-2的叢集ID}:
          replicas: 2
          # 這裡也支援resources配置,和Pod的資源配置欄位結構相同,為空白時使用ASM提供的預設配置
    說明

    切換為遠端控制面後,該叢集中的ASM網關會重啟,請評估後再進行操作。

步驟二:部署應用並進行測試

  1. 部署sleep應用和httpbin應用到cluster-2。具體應用部署步驟,請參見部署httpbin應用

  2. 使用cluster-2的kubeconfig,執行以下命令。

    kubectl get pod

    預期輸出:

    NAME                       READY   STATUS    RESTARTS   AGE
    httpbin-7df7fxxxxx-xxxxx   2/2     Running   0          3h15m
    sleep-6b7f9xxxxx-xxxxx     2/2     Running   0          3h15m

    可以看到兩個Pod中均被注入了Sidecar,並且處於Running狀態。

  3. 執行以下命令,從sleep應用訪問httpbin。

    kubectl exec deploy/sleep -it -- curl httpbin:8000/status/418

    預期輸出:

        -=[ teapot ]=-
    
           _...._
         .'  _ _ `.
        | ."` ^ `". _,
        \_;`"---"`|//
          |       ;/
          \_     _/
            `"""`

步驟三:叢集互相訪問說明

被託管控制面管理的工作負載預設可以訪問到遠端控制面的服務,遠端控制面的服務預設不可以訪問託管控制面的服務。