全部產品
Search
文件中心

Container Service for Kubernetes:如何使用鏡像緩衝加速建立工作流程Pod

更新時間:Oct 09, 2024

在拉取阿里雲鏡像服務ACR中的鏡像時,您可以通過配置免密簡化配置,加速鏡像拉取。本文介紹如何在工作流程叢集中使用鏡像緩衝加速建立工作流程Pod。

前提條件

步驟一:配置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

  1. 使用以下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
  2. 執行以下命令,部署鏡像緩衝ImageCache。

    kubectl apply -f imagecache.yaml
  3. 執行以下命令,擷取ImageCache狀態。

    kubectl get imagecaches

    預期輸出:

    NAME                    AGE     CACHEID        PHASE   PROGRESS
    imagecache-helloworld   3m36s   imc-f8zfxxxx   Ready   100%

    待狀態變為Ready後,即可使用此ImageCache建立工作流程。

  4. 在工作流程中指定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" ]