傳統容器運行需要將全量鏡像資料下載後再解包,然而容器啟動可能僅使用其中部分的內容,導致容器啟動耗時間長度。通過Container Registry企業版的按需載入功能,允許僅下載和解壓容器啟動所必需的部分,而不是整個鏡像,從而大幅提高應用部署速度和提升彈性體驗。
前提條件
支援ACK叢集版本及類型。
說明支援在版本≥1.16.9的託管版、專有版,≥1.26.3的ACK Edge叢集和ACK Serverless叢集、ACK靈駿叢集和容器計算服務ACS上使用加速鏡像。且建立叢集時作業系統為Alibaba Cloud Linux 2.1903、Alibaba Cloud Linux 3.2104、Alibaba Cloud Linux 3.2104 LTS 64 bit ARM edition、Alibaba Cloud Linux UEFI 2.1903、CentOS 7.9。
已建立企業版執行個體,更多資訊,請參見建立企業版執行個體。
重要在鏡像加速中,兩種模式支援的企業版執行個體規格有所不同:
完整模式:支援的企業版執行個體為標準版或進階版。
僅索引模式:支援的企業版執行個體為基礎版、標準版或進階版。
已在企業版執行個體中配置ACK或ACK Serverless叢集對應的專用網路。加速鏡像需要在專用網路中使用,更多資訊,請參見配置專用網路的存取控制。
背景資訊
通過Container Registry企業版的按需載入功能,您可以在業務部署中使用加速鏡像版本,實現鏡像資料免全量下載和線上解壓,大幅提升應用分發效率和彈性體驗。鏡像的加速效果與鏡像大小、鏡像倉庫網路等因素有關。經實測,基於Docker Hub的NodeBB鏡像(1.34 GB)啟動應用在鏡像拉取階段需耗費36s,整體應用啟動時間38s。基於加速鏡像啟動應用在鏡像拉取階段僅需4s,整體應用啟動時間僅需9s。
使用限制
如果您的容器運行時為Containerd,則支援加速鏡像倉庫使用自訂網域名,而Docker由於自身限制暫不支援加速鏡像倉庫自訂網域名的使用。更多資訊,請參見通過自訂網域名訪問Container Registry企業版執行個體。
僅索引模式不支援在FC和SAE的情境下使用。
存量鏡像需要手動觸發加速鏡像轉換。
地區限制
金融雲與政務雲地區不支援按需載入功能。
轉換加速鏡像
目前支援倉庫層級配置,自動將推送的原始鏡像轉換為加速鏡像。鏡像轉換時間取決於您的鏡像大小,原始鏡像不受任何影響。
加速鏡像的命名空間和倉庫名稱與原始鏡像保持一致,Tag格式為:
僅索引模式:原始鏡像tag+
_accelerated尾碼的加速鏡像僅支援Containerd運行時,且使用時原始鏡像tag不可刪除。完整模式:
原始鏡像tag+
_accelerated尾碼的加速鏡像。支援Docker和Containerd運行時原始鏡像tag+
_containerd_accelerated尾碼的加速鏡像僅適用於Containerd運行時。注意使用時
_containerd_accelerated尾碼的鏡像和其原始鏡像均不可刪除。
在頂部功能表列,選擇所需地區。
在左側導覽列,選擇執行個體列表。
在執行個體列表頁面單擊目標企業版執行個體。
在企業版執行個體管理頁左側導覽列中選擇。
在鏡像倉庫頁面單擊目標鏡像倉庫名稱或目標鏡像倉庫右側操作列下的管理。然後在基本資料頁面左上方單擊編輯。
在修改基本資料對話方塊中,開啟鏡像加速,並選擇所需模式後,單擊確定。
完整模式:容器啟動的加速效果較為顯著,轉換產生的加速鏡像體積約為原鏡像體積的130%,1GB原始鏡像產生加速鏡像的時間約為25秒,已產生的鏡像層不會重複產生。
僅索引模式:容器啟動的加速效果約為70%完整模式加速效果,加速鏡像體積約為3%原鏡像體積,1GB原始鏡像產生加速鏡像時間約為3秒,已產生索引的鏡像層不會重複產生。
重要僅索引模式正在公測中,建議您使用前先在測試環境進行驗證,驗證適用您的業務情境後再應用到生產環境中。
說明僅索引模式目前僅適用於
tar和tgz壓縮的鏡像,不適用於其他壓縮方式(如zstd壓縮)的鏡像。僅索引模式需要綁定原始鏡像使用,使用時原始鏡像不可刪除,完整模式可以獨立使用加速鏡像。
僅索引模式不支援Docker運行時使用。
在完成鏡像加速轉換設定後,您後續推送的鏡像將自動觸發鏡像轉換任務。若您希望接收鏡像轉換完成的通知,可以配置事件通知。例如將運算式設定為
_accelerated$,更多資訊,請參見事件通知。(可選)指定預取檔案清單。該列表中出現的檔案項將在加速鏡像啟動的時候被優先預取,推薦在容器啟動需要讀取大檔案時使用該功能。
說明格式為每行一個檔案絕對路徑,如果為目錄則需要以
/結尾。
安裝鏡像加速組件
為了啟動加速容器,需要在Worker節點安裝按需載入相關的鏡像儲存外掛程式。
為了支援DADI加速鏡像,您可以在ACK控制台中,通過節點池的容器鏡像加速開關,為建立節點池或存量節點池啟用節點的鏡像加速功能。
ACK託管版與專有叢集
為建立節點池時開啟
登入Container Service管理主控台,在左側導覽列選擇叢集列表。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇。
在節點池頁面,參見建立和管理節點池完成配置並勾選進階選項中容器鏡像加速。
為已有節點池開啟
開啟或關閉節點池容器鏡像加速開關後,僅對新增節點生效。如需針對存量節點生效,需要將節點移除出節點池後,重新添加回節點池,相關操作,請參見移除節點並添加已有節點。
登入Container Service管理主控台,在左側導覽列選擇叢集列表。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇。
在節點池列表頁面,單擊目標節點池所在行操作列的編輯,在進階選項中,勾選容器鏡像加速,按照頁面提示更新節點池的配置項。
在節點池列表,如果節點池狀態顯示更新中,表明節點池正在變更中。顯示已啟用,表明變更已完成。
其它類型叢集
您需要為節點添加鏡像加速標籤
alibabacloud.com/image-accelerate-enabled: true,以在節點初始化時自動開啟鏡像加速功能並安裝鏡像儲存外掛程式。不同類型叢集的標籤設定方式如下:
叢集類型
配置方式及文檔連結
ACK Serverless叢集
ACK Edge叢集
ACK靈駿叢集
容器計算服務ACS
安裝鏡像加速組件。
登入Container Service管理主控台,在左側導覽列選擇叢集列表。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,單擊組件管理。
在組件管理頁面的其他地區找到aliyun-acr-acceleration-suite,單擊右側的安裝。
在提示對話方塊中單擊確認。
在左側導覽列,選擇,在守護進程集頁面,查看組件守護進程安裝詳情。
在左側導覽列,選擇,在無狀態頁面查看組件無狀態應用安裝詳情。
當目標組件的容器組數量顯示全部啟動完成,表示組件安裝成功。
啟用加速鏡像
設定鏡像倉庫訪問憑證。
警告請確保您的鏡像拉取密鑰許可權按最小許可權原則配置,僅包含拉取本叢集所需業務鏡像的許可權。更多詳情,請參見授予RAM使用者自訂策略。
鏡像免密外掛程式方式。
若已使用免密外掛程式,且企業版執行個體的免密配置正確,無需其他動作。
若未使用免密外掛程式,您可使用免密外掛程式,更多資訊,請參見使用免密組件拉取容器鏡像。
指定鏡像拉取憑證Secret的標籤方式。
說明僅鏡像加速組件的版本不小於0.2.6支援該方式。
建立kubernetes.io/dockerconfigjson的Secret,並為其打上images.alibabacloud.com/accelerated: true的標籤。
kubectl create secret docker-registry <SecretName> --docker-server=<RegistryVpcDomain> --docker-username=<UserName> --docker-password=<Password>kubectl label secrets <SecretName> images.alibabacloud.com/accelerated="true"
添加鏡像加速標籤。
您可以為應用負載添加鏡像加速標籤,例如Pod、Deployment等。也可以為ACK或ACK Serverless叢集的命名空間設定標籤,該命名空間內的所有符合加速條件的應用負載會啟用按需載入容器鏡像,無需再修改所有符合加速條件的應用負載的YAML檔案。根據實際情況選擇任一方式添加鏡像加速標籤。
說明標籤的名稱為
k8s.aliyun.com/image-accelerate-mode,值為on-demand。為應用負載添加鏡像加速標籤。
以下以Pod為例設定標籤。執行以下命令,為Deployment管理的Pod設定標籤。
kubectl edit deployment <Deployment名稱> -n <Deployment命名空間>在Deployment的YAML描述檔案中添加標籤
k8s.aliyun.com/image-accelerate-mode: on-demand。apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: app: nginx # enable on-demand mode k8s.aliyun.com/image-accelerate-mode: on-demand spec: containers: # your ACR instacne image - image: test-registry-vpc.cn-hangzhou.cr.aliyuncs.com/test/nginx:latest name: test command: ["sleep", "3600"]為命名空間添加鏡像加速標籤
通過控制台添加鏡像加速標籤。
登入Container Service管理主控台,在左側導覽列選擇叢集列表。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇命名空間與配額。
在命名空間頁面單擊目標命名空間操作列的編輯。
在編輯命名空間對話方塊中設定標籤的變數名稱為
k8s.aliyun.com/image-accelerate-mode,標籤的變數值為on-demand,然後單擊確定。
通過命令列添加鏡像加速標籤。
kubectl label namespaces <YOUR-NAMESPACE> k8s.aliyun.com/image-accelerate-mode=on-demand設定加速標籤後,如果您已完成普通鏡像到加速鏡像的轉換,在相應命名空間內建立和更新Pod時,加速組件會自動將Pod的原始鏡像地址替換為加速鏡像地址,並添加nodeSelector,將Pod調度到加速節點。