全部產品
Search
文件中心

Container Registry:在邊緣叢集中使用P2P加速

更新時間:Sep 25, 2024

您可以在邊緣叢集中使用P2P加速功能提升鏡像拉取速度,減少應用部署時間。本文介紹如何在邊緣叢集中使用P2P加速功能。

前提條件

  • 已建立Container Registry企業版執行個體,且您建立的企業版執行個體必須為標準版或進階版。更多資訊,請參見建立企業版執行個體

  • 邊緣叢集需要通過公網網路訪問企業版執行個體,請確保已開啟公網訪問並添加白名單,更多資訊,請參見配置公網的存取控制

步驟一:擷取企業版執行個體ID

  1. 登入Container Registry控制台

  2. 在頂部功能表列,選擇所需地區。

  3. 在左側導覽列,選擇執行個體列表

  4. 執行個體列表頁面單擊目標企業版執行個體。

  5. 概覽頁面左上方查看容器鏡像執行個體ID。

步驟二:安裝P2P組件

  1. 登入Container Service管理主控台

  2. 在控制台左側導覽列,選擇市場 > 應用市場

  3. 應用目錄頁面搜尋ack-edge-acr-acceleration-p2p,找到ack-edge-acr-acceleration-p2p,然後單擊ack-edge-acr-acceleration-p2p。

  4. 建立面板選擇邊緣叢集。

    重要

    請務必先選擇叢集再配置參數,先配置參數再選擇叢集會導致參數配置失效。

  5. 單擊參數頁簽,設定registryInstances參數為上文擷取的容器鏡像執行個體ID。

    如果有多個容器鏡像執行個體,則設定registryInstances參數時,中間用英文逗號(,)串連。

    說明

    預設佔用節點上的65001連接埠,如果有衝突,請根據實際情況修改。

    p2p:
      ...
      # Port of P2P Agent in host network
      port: 65001
    
      # Id of ACR registry instances, support multi, e.g. "cri-xxx,cri-yyy"
      registryInstances: <ACR instance Id>
  6. 設定plusMode參數,使邊緣節點池可以使用P2P組件進行P2P加速。

    說明

    關於如何查看邊緣節點池名稱和ID,請參見查看邊緣節點池名稱和ID

    p2p:
      plusMode:   
        # 取值`p2p`或`source`。
        # `p2p`表示優先從P2P網路中下載。
        # `source`表示直接從registry-mirror或者雲上registry下載,此時不會安裝scheduler。
        downloadPattern: "p2p"
        
        # registry-mirror快取資料保留時間,根據您節點磁碟容量適當調整。
        cacheTTL: 24h
        
        # registry-mirror快取資料保留的宿主機路徑。
        # 若不設定, 緩衝會在registry-mirror容器重啟時丟失。
        cacheHostPath: ""    
    
        # 邊緣節點池配置,可配置多個,可從ACK控制台節點池擷取相關參數。
        # `name`為某個邊緣節點池的名稱。
        # `id`為某個邊緣節點池的id。
        edgeNodePools:
          - name: ""
            id: ""      
        
        # 若開啟,表示回源下載時切換到oss的公網傳輸加速鏈路,適用於公網跨海、跨地區等公網鏈路不穩定的情境。
        # 需要確保事先在oss控制台開啟該加速能力。
        ossInternetAccelerate: false    
       
        # 若開啟,scheduler和registry-mirror會部署到指定的節點上。
        # 需要您事先為指定的節點打上標籤:`k8s.aliyun.com/p2p-plus-node=true`。
        nodeSelectorEnable: false
  7. 可選:若您的叢集與企業版執行個體處於不同地區,需要設定region參數為企業版執行個體的地區。

    # 您的叢集與企業版執行個體處於不同地區,請指定企業版執行個體的地區。
    region: ""
  8. 可選:如果您需要對節點上P2P組件的總頻寬(包括下行和上行頻寬)進行限制,則需要設定ratelimit參數,預設5 MB/s,根據您的節點頻寬適當調整。

    p2p:
      # Total net rate limit (MBytes/s) for uploading and downloading
      ratelimit: "5M"
  9. 建立面板單擊建立

步驟三:啟用P2P加速

您可以通過添加標籤的方式啟用P2P加速,可以為應用負載添加P2P加速標籤,例如Pod、Deployment等。也可以為ACK叢集的命名空間設定P2P加速標籤。為命名空間設定P2P加速標籤後,該命名空間內的所有符合加速條件的應用負載都會啟用P2P加速,無需再修改應用負載的YAML檔案。根據實際情況選擇任一方式添加P2P加速標籤。

說明

標籤的名稱為k8s.aliyun.com/image-accelerate-mode,值為p2p

  • 為應用負載添加P2P加速標籤。

    以下以Deployment為例設定標籤。執行以下命令,為Deployment設定標籤。

    kubectl edit deploy <Deployment名稱>

    在Deployment檔案中添加標籤k8s.aliyun.com/image-accelerate-mode: p2p

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: test
      labels:
        app: nginx
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            # enable P2P
            k8s.aliyun.com/image-accelerate-mode: p2p
            app: nginx
        spec:
          # your ACR instacne image pull secret
          imagePullSecrets:
          - name: test-registry
          containers:
          # your ACR instacne image
          - image: test-registry-vpc.cn-hangzhou.cr.aliyuncs.com/docker-builder/nginx:latest
            name: test
            command: ["sleep", "3600"]
  • 為命名空間添加P2P加速標籤

    • 通過控制台添加P2P加速標籤。

      1. 登入Container Service管理主控台

      2. 在控制台左側導覽列中,單擊叢集

      3. 叢集列表頁面中,單擊目的地組群名稱或者目的地組群右側操作列下的詳情

      4. 在叢集管理頁面單擊命名空間與配額

      5. 命名空間頁面單擊目標命名空間操作列的編輯

      6. 編輯命名空間對話方塊中設定標籤變數名稱k8s.aliyun.com/image-accelerate-mode標籤變數值p2p,然後單擊確定

    • 通過命令列添加P2P加速標籤。

      kubectl label namespaces <your-namespace> k8s.aliyun.com/image-accelerate-mode=p2p

驗證P2P加速

啟用P2P加速後,P2P組件會自動為Pod注入P2P相關annotation、P2P加速鏡像地址以及對應的鏡像拉取憑證。

重要

P2P鏡像拉取憑證與您原先配置的非P2P鏡像地址拉取憑證僅鏡像倉庫網域名稱不一樣,其他憑證資訊一致。因此,若您原先鏡像拉取憑證使用者資訊配置錯誤,也會導致P2P鏡像拉取失敗。

執行以下命令,查看Pod。

kubectl get po <Pod的名稱> -oyaml

預期輸出:

apiVersion: v1
kind: Pod
metadata:
  annotations:
    # inject p2p-annotations automatically
    k8s.aliyun.com/image-accelerate-mode: p2p
    k8s.aliyun.com/p2p-config: '...'
spec:
  containers:
   # inject image to p2p endpoint
   - image: test-registry-vpc.distributed.cn-hangzhou.cr.aliyuncs.com:65001/docker-builder/nginx:latest
  imagePullSecrets:
  - name: test-registry
  # inject image pull secret for p2p endpoint
  - name: acr-credential-test-registry-p2p

可以看到,Pod已注入P2P相關annotation、P2P加速鏡像地址以及對應的鏡像拉取憑證,說明啟用P2P加速成功。

查看邊緣節點池名稱和ID

  1. 登入Container Service管理主控台

  2. 在控制台左側導覽列,單擊叢集

  3. 叢集列表頁面,單擊目的地組群名稱或者目的地組群右側操作列下的詳情

  4. 在叢集管理頁左側導覽列,選擇節點管理 > 節點池

  5. 在節點池頁面可以查看節點池名稱,然後單擊目標節點池名稱。

  6. 在節點池詳情頁面節點池資訊地區查看節點池ID