すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:イメージキャッシュを使用したワークフロー Pod 作成の高速化

最終更新日:Mar 26, 2026

Pod の起動ごとにレジストリから大規模なコンテナイメージをプルすると、ワークフローの実行が遅くなります。このドキュメントでは、Container Registry Enterprise Edition (ACR EE) インスタンスからのパスワードレスプルを設定する方法と、イメージキャッシュを使用して冗長なプルをスキップし、Pod の作成を高速化する方法について説明します。

前提条件

開始する前に、以下をご確認ください。

パスワードレスでのイメージプルの設定

ご利用の workflow.yaml ファイルの spec.podMetadata.annotationsk8s.aliyun.com/acr-instance-id アノテーションを追加します。値は リージョン ID:インスタンス 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 EE インスタンスのリージョン ID とインスタンス ID
  templates:
    - name: whalesay
      container:
        image: acr-en-hangzhou-registry.cn-hangzhou.cr.aliyuncs.com/workflow/whalesay   # ACR EE インスタンスからプルするイメージ
        command: [ cowsay ]
        args: [ "hello world" ]

ワークフローと ACR EE インスタンスが同じリージョンにある場合は、リージョン ID を省略し、値をインスタンス ID のみに設定します。

イメージキャッシュを使用したワークフロー Pod の作成

イメージキャッシュはプルされたイメージを保存するため、後続の Pod 起動ではプルが完全にスキップされます。ニーズに応じて、自動作成と手動作成のいずれかを選択してください。

イメージキャッシュの自動作成

spec.podMetadata.annotationsk8s.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" ]

イメージキャッシュの手動作成

特定のキャッシュサイズを設定したり、保持期間を設定したりする必要がある場合は、このメソッドを使用します。

ステップ 1: イメージキャッシュの作成

次の内容で 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:             # 非公開イメージ用のシークレット。パブリックイメージには不要
  - default:secret1
  imageCacheSize:               # キャッシュサイズ (GiB)。デフォルト: 20。有効範囲: 20~32768
   20
  retentionDays:                # キャッシュが期限切れになるまでの日数。無期限にする場合は空白のままにする
   7

ファイルを適用します。

kubectl apply -f imagecache.yaml

ステップ 2: イメージキャッシュの準備完了の確認

kubectl get imagecaches

PHASEReady と表示され、PROGRESS100% に達するまで待ちます。

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

ステップ 3: ワークフローでのイメージキャッシュの参照

上記の出力から CACHEID をコピーし、k8s.aliyun.com/eci-image-snapshot-id アノテーションの値として設定します。

apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
  generateName: hello-world-
spec:
  podMetadata:
    annotations:
      k8s.aliyun.com/eci-image-snapshot-id: "imc-f8zf****"   # kubectl get imagecaches から取得したイメージキャッシュ ID
  entrypoint: whalesay
  templates:
    - name: whalesay
      container:
        image: docker/whalesay
        command: [ cowsay ]
        args: [ "hello world" ]

次のステップ