全部產品
Search
文件中心

Container Service for Kubernetes:使用按需載入容器鏡像加速容器啟動

更新時間:Dec 25, 2025

容器鏡像是按層儲存的壓縮資料,容器啟動時通常需要下載並逐層解壓容器鏡像資料。在多數業務情境下,容器運行時僅需要讀取容器鏡像中一部分資料,運行時無需讀取的冗餘鏡像資料的下載和解壓流程消耗了系統資源,增加容器啟動耗時。ACK基於DADI(Data Accelerator for Disaggregated Infrastructure)鏡像加速支援人員容器鏡像的按需載入,實現鏡像資料免全量下載以及線上解壓,以顯著縮短應用啟動時間。

加速效果

鏡像的加速效果與鏡像大小、鏡像倉庫網路等因素有關。經實測,基於Docker Hub的NodeBB鏡像(1.34 GB)啟動應用在鏡像拉取階段需耗費36s,整體應用啟動時間38s。基於加速鏡像啟動應用在鏡像拉取階段僅需4s,整體應用啟動時間僅需9s。

重要

以上鏡像拉取耗時資料僅為參考值,在不同作業環境中可能有所不同,請以實際情況為準。

適用範圍

  • 僅支援ACK託管叢集,且滿足以下要求:

    • 叢集版本為1.26及以上。如需升級叢集,請參見手動升級叢集

    • 節點運行時為containerd,且containerd版本為1.6.34及以上。如需升級,請參見升級節點池

  • 僅支援DADI中完整模式,不支援僅索引模式。

步驟一:擷取加速鏡像

可以通過開源工具將現有容器鏡像轉換為DADI加速鏡像格式,也可以使用ACR企業版提供的按需載入容器鏡像功能來將現有容器鏡像轉換為 DADI 加速鏡像格式。

使用開源方式

可以通過DADI將現有容器鏡像轉換為DADI鏡像格式,操作步驟如下所示。

  1. 執行以下命令,安裝snapshotter依賴。

    # 下載執行個體架構支援的安裝包。
    wget https://github.com/containerd/accelerated-container-image/releases/download/v1.2.3/overlaybd-snapshotter-1.2.3-20241016090917.0c2f057.x86_64.rpm
    rpm -ivh overlaybd-snapshotter-1.2.3-20241016090917.0c2f057.x86_64.rpm 
  2. 執行以下命令,安裝overlaybd依賴。

    # 下載執行個體架構支援的安裝包。
    wget https://github.com/containerd/overlaybd/releases/download/v1.0.13/overlaybd-1.0.13-20240821.a117098.el8.x86_64.rpm
    rpm -ivh overlaybd-1.0.13-20240821.a117098.el8.x86_64.rpm
  3. 執行如下命令轉換鏡像。

    本樣本以ACR鏡像倉庫作為鏡像儲存服務。如需使用自我維護的鏡像倉庫,請修改樣本指令中的鏡像地址及帳號、密碼。

    /opt/overlaybd/snapshotter/convertor -u user:password -r xxxxx-registry.cn-hangzhou.cr.aliyuncs.com/default/redis -i latest -o latest_obd_new

使用ACR企業版

ACR企業版(標準版或進階版)支援在倉庫層級配置按需載入容器鏡像,並自動將推送的原始鏡像轉換為加速鏡像。鏡像轉換時間取決於鏡像大小,原始鏡像不受任何影響。更多資訊及使用限制,請參見按需載入容器鏡像

說明

加速鏡像的命名空間和倉庫名稱與原始鏡像保持一致,Tag格式為原始鏡像tag_accelerated尾碼。

  1. 登入Container Registry控制台,在頂部功能表列,選擇所需地區。

  2. 在左側導覽列,選擇執行個體列表,在執行個體列表頁面單擊目標企業版執行個體。

  3. 在左側導覽列,選擇倉庫管理 > 鏡像倉庫

  4. 單擊目標鏡像倉庫名稱,進入基本資料頁面,單擊頁面左上方編輯

  5. 修改基本資料對話方塊,開啟鏡像加速,選擇完整模式,然後單擊確定

    說明

    完成鏡像加速轉換設定後,後續推送的鏡像將自動觸發鏡像轉換任務。如需接收鏡像轉換完成的通知,可以配置事件通知。例如將運算式設定為_accelerated$,更多資訊,請參見事件通知

步驟二:開啟節點池容器鏡像加速功能

為了支援DADI加速鏡像,可以在ACK控制台中,通過節點池的容器鏡像加速開關,為建立節點池或存量節點池啟用節點的鏡像加速功能。

為建立節點池時開啟

  1. 登入Container Service管理主控台,在左側導覽列選擇叢集列表

  2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇節點管理 > 節點池

  3. 節點池頁面,參見建立和管理節點池完成配置並勾選進階選項容器鏡像加速

為已有節點池開啟

開啟或關閉節點池容器鏡像加速開關後,僅對新增節點生效。如需針對存量節點生效,需要將節點移除出節點池後,重新添加回節點池,相關操作,請參見移除節點添加已有節點

  1. 登入Container Service管理主控台,在左側導覽列選擇叢集列表

  2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇節點管理 > 節點池

  3. 在節點池列表頁面,單擊目標節點池所在行操作列的編輯,在進階選項中,勾選容器鏡像加速,按照頁面提示更新節點池的配置項。

    在節點池列表,如果節點池狀態顯示更新中,表明節點池正在變更中。顯示已啟用,表明變更已完成。

步驟三:使用加速鏡像建立應用

配置容器鏡像拉取憑證

安裝aliyun-acr-acceleration-suite組件

  1. 登入Container Service管理主控台,在左側導覽列選擇叢集列表

  2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,單擊組件管理

  3. 在其他地區,定位aliyun-acr-acceleration-suite,單擊右側的安裝

配置拉取憑證

說明

如果應用無需使用鏡像密鑰拉取私人鏡像,可跳過此步驟,直接建立使用加速鏡像的應用

可以參見下文配置鏡像拉取憑證。

  • 為ACR企業版執行個體配置免密外掛程式

    安裝配置免密外掛程式。在ACK中正確安裝免密外掛程式後,系統將自動為合格工作負載注入ACR倉庫的訪問憑證,無需手動維護訪問憑證的生命週期以及管理其與工作負載的關聯。具體操作,請參見免密拉取ACR鏡像

  • 為自建鏡像倉庫手動建立Secret

    執行以下命令,建立kubernetes.io/dockerconfigjson類型的Secret,配置容器鏡像倉庫的帳號、密碼。

    kubectl create secret docker-registry <SecretName> --docker-server=<RegistryVpcDomain> --docker-username=<UserName> --docker-password=<Password>

    執行以下命令,為Secret添加標籤images.alibabacloud.com/accelerated: true

    kubectl label secrets <SecretName>  images.alibabacloud.com/accelerated="true"

建立使用加速鏡像的應用

使用以下樣本內容建立和更新Pod,將調度到加速節點。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      nodeSelector:
        alibabacloud.com/image-accelerate-enabled: "true" # 此處增加節點選擇標籤
      containers:
        - name: test
          image: xxxxx-registry.cn-hangzhou.cr.aliyuncs.com/default/redis:latest_obd_new # 此處填入加速鏡像地址
          command: ["sleep", "3600"]

關閉容器鏡像加速

如果不再需要使用DADI加速鏡像,可在ACK控制台中,通過節點池的容器鏡像加速開關,關閉節點的鏡像加速功能。

  1. 登入Container Service管理主控台,在左側導覽列選擇叢集列表

  2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇節點管理 > 節點池

  3. 在節點池列表頁面,單擊目標節點池所在行操作列的編輯,在進階選項中,將容器鏡像加速的勾選移除,按照頁面提示更新節點池的配置項。如果節點池狀態為已啟用,表明變更已完成。

    重要

    關閉節點池容器鏡像加速僅對新增節點生效。如需關閉現有節點的容器鏡像加速,需要將節點移除出節點池後重新添加回節點池,請參見移除節點添加已有節點

相關文檔

如需通過資料盤緩衝方式加速工作負載和節點初始化的速度,請參見通過資料盤快照加速ACK節點擴容