在拉取阿里云鏡像服務ACR中的鏡像時,您可以通過配置免密簡化配置,加速鏡像拉取。本文介紹如何在工作流集群中使用鏡像緩存加速創建工作流Pod。
前提條件
已創建ACR企業版實例并完成鏡像倉庫相關配置。具體操作,請參見使用企業版實例推送和拉取鏡像。
已記錄ACR企業版實例ID、地域、域名等信息。
步驟一:配置workflow免密拉取ACR企業版鏡像
通過在workflow.yaml文件中增加Pod的annotations: k8s.aliyun.com/acr-instance-id
指定鏡像所在的ACR企業版實例,其中acr-instance-id
配置格式為ACR企業版實例所在地域:實例ID
,如果工作流與ACR企業版實例在同一地域,則直接配置ACR企業版實例ID,省略地域。
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: hello-world-
spec:
entrypoint: whalesay
podMetadata:
annotations:
k8s.aliyun.com/acr-instance-id: "cn-hangzhou:cri-f34lmbk2rxqx41u8" # 指定鏡像所在的ACR企業版實例的地域和ID。
templates:
- name: whalesay
container:
image: acr-en-hangzhou-registry.cn-hangzhou.cr.aliyuncs.com/workflow/whalesay # 從ACR企業版拉取鏡像。
command: [ cowsay ]
args: [ "hello world" ]
步驟二:使用鏡像緩存加速創建工作流Pod
您可以通過以下自動創建和手工創建兩種方式使用鏡像緩存ImageCache,加速創建工作流Pod。關于使用鏡像緩存的更多信息,請參見使用鏡像緩存。
自動創建并使用鏡像緩存ImageCache
通過在workflow.yaml文件中增加Pod的annotations: k8s.aliyun.com/eci-image-cache: "true"
開啟鏡像緩存功能,自動使用工作流中的鏡像創建鏡像緩存。
如果鏡像緩存已存在,則直接使用鏡像緩存創建工作流Pod,無需鏡像下載,可加速Pod創建過程。
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: hello-world-
spec:
podMetadata:
annotations:
k8s.aliyun.com/eci-image-cache: "true" # 開啟自動鏡像緩存功能。
entrypoint: whalesay
templates:
- name: whalesay
container:
image: docker/whalesay
command: [ cowsay ]
args: [ "hello world" ]
手工創建并使用鏡像緩存ImageCache
使用以下YAML內容,創建imagecache.yaml文件。
apiVersion: eci.alibabacloud.com/v1 kind: ImageCache metadata: name: imagecache-helloworld annotations: k8s.aliyun.com/imc-enable-reuse: "true" # 開啟鏡像緩存復用。 spec: images: # 用于創建鏡像緩存的容器鏡像列表。 - docker/whalesay imagePullSecrets: # 鏡像倉庫對應的Secret列表,公開鏡像可省略。 - default:secret1 imageCacheSize: # 鏡像緩存大小。默認為20 GiB。取值范圍為[20~32768] GiB。 20 retentionDays: # 鏡像緩存保留時長,過期會被清理。單位為天。默認永不過期。 7
執行以下命令,部署鏡像緩存ImageCache。
kubectl apply -f imagecache.yaml
執行以下命令,獲取ImageCache狀態。
kubectl get imagecaches
預期輸出:
NAME AGE CACHEID PHASE PROGRESS imagecache-helloworld 3m36s imc-f8zfxxxx Ready 100%
待狀態變為
Ready
后,即可使用此ImageCache創建工作流。在工作流中指定ImageCache ID,避免鏡像下載,加速工作流創建過程。
apiVersion: argoproj.io/v1alpha1 kind: Workflow metadata: generateName: hello-world- spec: podMetadata: annotations: k8s.aliyun.com/eci-image-snapshot-id: "imc-f8zf****" # 明確指定使用的哪個ImageCache緩存創建Pod。 entrypoint: whalesay templates: - name: whalesay container: image: docker/whalesay command: [ cowsay ] args: [ "hello world" ]
文檔內容是否對您有幫助?