使用按需加載鏡像加速容器啟動
本文中含有需要您注意的重要提示信息,忽略該信息可能對您的業(yè)務(wù)造成影響,請務(wù)必仔細(xì)閱讀。
傳統(tǒng)容器鏡像在容器啟動前需要進(jìn)行全量下載并解包,然而容器啟動可能僅依賴其中少部分鏡像內(nèi)容,加載暫未需要的鏡像內(nèi)容將導(dǎo)致容器啟動出現(xiàn)不必要的耗時。阿里云容器鏡像服務(wù) ACR(Container Registry)企業(yè)版提供了DADI(Data Accelerator for Disaggregated Infrastructure)加速鏡像的制作與托管服務(wù)。容器計算服務(wù) ACS(Container Compute Service)集成了對DADI overlaybd加速鏡像格式的支持,允許容器按需加載鏡像文件,從而大幅縮短啟動時間。本文介紹如何使用ACR企業(yè)版制作加速鏡像并在ACS中加速容器啟動。
前提條件
已創(chuàng)建ACS集群。具體操作,請參見創(chuàng)建ACS集群。
已創(chuàng)建實例規(guī)格為標(biāo)準(zhǔn)版或高級版的ACR企業(yè)版實例,更多信息,請參見創(chuàng)建企業(yè)版實例。
已在ACR企業(yè)版實例中配置ACS集群可達(dá)的訪問控制類型。如使用VPC網(wǎng)絡(luò),則添加ACS集群所在VPC,參見配置專有網(wǎng)絡(luò)的訪問控制;使用公網(wǎng)網(wǎng)絡(luò),則確保白名單規(guī)則對ACS集群開放,參見配置公網(wǎng)的訪問控制。
如果使用僅索引模式加速,需要聯(lián)系A(chǔ)CR工作人員提交白名單工單開啟試用。
背景信息
通過使用DADI加速鏡像,您可以加速工作負(fù)載的啟動效率,實現(xiàn)鏡像數(shù)據(jù)按需加載和在線解壓,大幅提升應(yīng)用分發(fā)效率和彈性體驗。詳細(xì)內(nèi)容,請參見按需加載容器鏡像。
鏡像的加速效果與鏡像大小、鏡像倉庫網(wǎng)絡(luò)等因素有關(guān)。經(jīng)實測,基于Docker Hub的NodeBB鏡像(1.34 GB)啟動應(yīng)用在鏡像拉取階段需耗費(fèi)36s,整體應(yīng)用啟動時間38s。基于加速鏡像啟動應(yīng)用在鏡像拉取階段僅需4s,整體應(yīng)用啟動時間僅需9s。
使用限制
多架構(gòu)鏡像暫不支持加速鏡像轉(zhuǎn)換。
Pod存活期間,加速鏡像必須保證持續(xù)可訪問,若使用僅索引模式,則加速鏡像及原始鏡像都必須保證持續(xù)可訪問。
開啟鏡像加速
目前支持倉庫級別配置,自動將推送的原始鏡像轉(zhuǎn)換為加速鏡像。鏡像轉(zhuǎn)換時間取決于您的鏡像大小,原始鏡像不受任何影響。
在頂部菜單欄,選擇所需地域。
在左側(cè)導(dǎo)航欄,選擇實例列表。
在實例列表頁面單擊目標(biāo)企業(yè)版實例。
在企業(yè)版實例管理頁左側(cè)導(dǎo)航欄中選擇 。
在鏡像倉庫頁面單擊目標(biāo)鏡像倉庫名稱或目標(biāo)鏡像倉庫右側(cè)操作列下的管理。
在基本信息頁面左上角單擊編輯。
在修改基本信息對話框中,開啟鏡像加速,單擊確定。
說明加速鏡像有兩種轉(zhuǎn)換模式:
完整模式下,生成的鏡像包含完整的鏡像內(nèi)容,體積約為原始鏡像的130%,可以顯著提高容器啟動速度。生成的鏡像tag格式為原始鏡像tag加
_containerd_accelerated
后綴。僅索引模式下,生成的鏡像僅包含每層內(nèi)容的索引,體積約為原鏡像的3%,轉(zhuǎn)換速度較快,對容器啟動的加速效果約為完整模式下的70%。生成的鏡像tag格式為原始鏡像tag加
_accelerated
后綴。
重要僅索引模式尚未正式上線,目前需要聯(lián)系A(chǔ)CR工作人員提交白名單工單開啟試用。
使用鏡像加速
為了啟動使用加速鏡像的容器,需要為ACS提供足夠的權(quán)限以便拉取鏡像。對于加速鏡像,ACS提供了兩種方式配置權(quán)限。
通過免密插件
在ACS中正確安裝免密插件,將自動為符合條件的工作負(fù)載注入ACR倉庫的訪問憑證,無需手動維護(hù)訪問憑證的生命周期以及與工作負(fù)載的關(guān)聯(lián)。通過免密插件啟動使用加速鏡像的容器步驟如下:
安裝并配置免密插件,請參見免密拉取ACR鏡像。
使用加速鏡像名創(chuàng)建工作負(fù)載。請注意,需要確保工作負(fù)載使用了免密插件配置項中關(guān)聯(lián)的ServiceAccount,并位于相同的命名空間下。示例工作負(fù)載如下:
完整模式
說明完整模式暫不支持Referrers API,在使用加速鏡像時需要填寫完整的加速鏡像tag。
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: containers: # 此處填入轉(zhuǎn)換后的加速鏡像名 - image: test-registry-vpc.cn-hangzhou.cr.aliyuncs.com/test/nginx:latest_containerd_accelerated name: test command: ["sleep", "3600"]
僅索引模式
說明ACR企業(yè)版實例開啟僅索引模式鏡像加速功能后,鏡像倉庫符合Referrers API規(guī)范,加速鏡像制品將反向鏈接至原始鏡像,在ACS中使用加速鏡像時僅需填寫原始鏡像的tag。
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: containers: # 此處填入原始鏡像名即可 - image: test-registry-vpc.cn-hangzhou.cr.aliyuncs.com/test/nginx:latest name: test command: ["sleep", "3600"]
通過創(chuàng)建Secret
您可以手動維護(hù)鏡像拉取密鑰,通過創(chuàng)建kubernetes.io/dockerconfigjson
類型的Secret,配置ACR容器鏡像倉庫的訪問賬密,可以靈活啟用加速鏡像功能。創(chuàng)建Secret并啟動使用加速鏡像的容器步驟如下:
創(chuàng)建加速鏡像專用的Secret,需要包含名稱前綴
acr-credential-
,或者標(biāo)簽值images.alibabacloud.com/accelerated: true
。示例如下:創(chuàng)建包含名稱前綴的專用Secret
kubectl create secret docker-registry acr-credential-test --docker-server=RegistryVpcDomain --docker-username=UserName --docker-password=Password
創(chuàng)建包含標(biāo)簽值的專用Secret
kubectl create secret docker-registry <SecretName> --docker-server=<RegistryVpcDomain> --docker-username=<UserName> --docker-password=<Password>
kubectl label secrets <SecretName> images.alibabacloud.com/accelerated="true"
警告請確保您的鏡像拉取密鑰權(quán)限按最小權(quán)限原則配置,僅包含拉取本集群所需業(yè)務(wù)鏡像的權(quán)限。更多詳情,請參見授予RAM用戶自定義策略。
使用加速鏡像名及Secret創(chuàng)建工作負(fù)載。示例如下:
完整模式
說明完整模式暫不支持Referrers API,在使用加速鏡像時需要填寫完整的加速鏡像tag。
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: imagePullSecrets: # 此處填入正確的Secret名 - name: acr-credential-test containers: # 此處填入轉(zhuǎn)換后的加速鏡像名 - image: test-registry-vpc.cn-hangzhou.cr.aliyuncs.com/test/nginx:latest_containerd_accelerated name: test command: ["sleep", "3600"]
僅索引模式
說明ACR企業(yè)版實例開啟僅索引模式鏡像加速功能后,鏡像倉庫符合Referrers API規(guī)范,加速鏡像制品將反向鏈接至原始鏡像,在ACS中使用加速鏡像時僅需填寫原始鏡像的tag。
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: imagePullSecrets: # 此處填入正確的Secret名 - name: acr-credential-test containers: # 此處填入原始鏡像名即可 - image: test-registry-vpc.cn-hangzhou.cr.aliyuncs.com/test/nginx:latest name: test command: ["sleep", "3600"]