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

Container Service for Kubernetes:ImageCache を使用して Elastic Container Instance の作成を高速化する

最終更新日:Mar 27, 2025

Alibaba Cloud は、ImageCache カスタムリソース定義 (CRD) を使用することにより、Elastic Container Instance のイメージキャッシュ機能を提供しています。この機能により、Kubernetes クラスターで Elastic Container Instance が作成されるたびにリモートリポジトリからコンテナイメージをプルするのに必要な時間が短縮されます。このトピックでは、より高速な Elastic Container Instance の作成のために ImageCache を作成および使用する方法について説明します。

ImageCache とは

ImageCache は、コンテナイメージのレイヤーをキャッシュしてインスタンスの作成を高速化する、Elastic Container Instance によって定義されたリソースを表します。各 ImageCache はイメージキャッシュに対応しています。Elastic Container Instance を作成するときに、すべてのイメージレイヤーをダウンロードする代わりに、ImageCache を使用すると、インスタンスは事前にキャッシュされたレイヤーを使用できます。この機能により、特にサイズの大きいイメージの場合やネットワークの状態が不安定な場合に、コンテナーの起動に必要な時間が短縮されます。詳細については、「イメージキャッシュの概要」をご参照ください。

説明

削減される時間は、イメージの数とサイズ、およびネットワークの状態によって異なります。

課金

ImageCache の作成および使用中に、関連リソースの料金が発生する場合があります。詳細については、「イメージキャッシュの課金」をご参照ください。

手順

ステップ 1:ImageCache CRD をデプロイする

次のコマンドを実行して、クラスターが ImageCache をサポートしているかどうかを確認します。

kubectl get crd/imagecaches.eci.alibabacloud.com
  • imagecaches.eci.alibabacloud.com に関する情報が返された場合、クラスターは ImageCache をサポートしています。

  • エラーメッセージが返された場合は、ACK Virtual Node コンポーネントを最新バージョンに更新して、ImageCache を有効にしてください。

ステップ 2:ImageCache を作成する

ImageCache は、自動または手動の 2 つの方法で作成できます。コスト効率のために、新しい Elastic Container Instance の即時高速化が必要な場合を除き、ImageCache の自動作成を使用することをお勧めします。手動で作成された ImageCache と自動で作成された ImageCache の違いの詳細については、「イメージキャッシュを作成する方法」をご参照ください。

方法

説明

自動作成

Elastic Container Instance を作成するときに、ImageCache の自動一致を有効にすることができます。その後、ImageCache が一致しない場合、システムは Elastic Container Instance の作成中に ImageCache を自動的に作成します。このキャッシュは、同じイメージを使用して Elastic Container Instance を後で作成する際に高速化するために使用できます。

手動作成

初めて Elastic Container Instance を作成し、作成をできるだけ早くしたい場合は、YAML テンプレートを使用して事前に ImageCache を手動で作成できます。詳細については、「ImageCache を管理する」および「イメージキャッシュのアノテーション」をご参照ください。

説明
  • Elastic Container Instance の初回作成時の高速化を除き、コストを節約するために自動作成された ImageCache を使用することをお勧めします。

  • 手動で作成された ImageCache と自動で作成された ImageCache の違いの詳細については、「イメージキャッシュを作成する方法」をご参照ください。

ステップ 3:ImageCache を使用して Elastic Container Instance を作成する

ImageCache から Elastic Container Instance を作成する場合、ImageCache を 自動的に一致させる か、手動で 指定 することができます。

自動一致を有効にし、より厳密な一致のために imc-perfect-match パラメーターを構成することをお勧めします。imc-perfect-matchimc-match-count-request の両方が構成されている場合、前者が優先されます。自動一致と手動指定の両方が構成されている場合、後者が優先されます。詳細については、「イメージキャッシュの概要」をご参照ください。

次の表に、主要なアノテーションを示します。

一致方法

アノテーション

説明

自動一致

k8s.aliyun.com/eci-auto-imc

"true"

イメージキャッシュを自動的に一致させるかどうかを指定します。デフォルト値は true です。これは、システムが一致ポリシーに基づいて Elastic Container Instance を作成するのに最適な ImageCache を自動的に一致させることを示します。システムは、イメージの一致度、イメージのサイズ、イメージが作成された時点の順に ImageCache を選択します。

完全に一致する ImageCache がない場合、システムは Elastic Container Instance の作成時に自動的に ImageCache を作成します。

k8s.aliyun.com/imc-perfect-match

"true"

Pod 内のすべてのコンテナイメージが ImageCache と完全に一致する必要があるかどうかを指定します。デフォルト値:false。

k8s.aliyun.com/imc-match-count-request

"2"

ImageCache と完全に一致する必要がある Pod 内のコンテナイメージの数を指定します。

手動指定

k8s.aliyun.com/eci-imc-id

imc-2zebxkiifuyzzlhl****

Pod を作成するためのイメージキャッシュを指定します。

構成例

ImageCache はクラスターレベルのリソースであり、異なる名前空間で使用できます。

  • アノテーションは、Pod 構成ファイルの metadata セクションに追加する必要があります。たとえば、Deployment では、spec.template.metadata の下にアノテーションを追加します。

  • これらのアノテーションは、Elastic Container Instance を作成するときにのみ有効です。既存の Elastic Container Instance のアノテーションを追加または変更しても、有効になりません。

  • eci-profile の Elastic Container Instance Effect 機能は、事前定義された条件に基づいて ImageCache 関連のアノテーションを Pod に動的に追加することで、イメージキャッシュ機能を自動的に使用します。これらのアノテーションが Pod の YAML ファイルに存在しない場合は、eci-profile を構成することで、各 Pod の YAML ファイルを手動で更新することなく、システムが一致するすべての Pod に自動的に適用します。詳細については、「eci-profile を構成して ImageCache 機能を自動的に使用する」をご参照ください。

重要
  • イメージの一致:ImageCache を使用してイメージを指定し、一致度を向上させてキャッシュを最大限に活用します。

  • プルポリシーImagePullPolicyIfNotPresent に設定して、同じイメージレイヤーが繰り返しダウンロードされないようにします。

ImageCache を自動的に一致させる

apiVersion: apps/v1
kind: Deployment
metadata:
  name: test
  labels:
    app: test
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      name: nginx-test
      labels:
        app: nginx
        alibabacloud.com/eci: "true"
      annotations:
        k8s.aliyun.com/eci-auto-imc: "true"  # イメージキャッシュの自動一致を有効にします
        k8s.aliyun.com/imc-perfect-match: "true" # Pod 内のすべてのコンテナイメージがイメージキャッシュと一致する必要があることを指定します。
    spec:
      containers:
      - name: nginx
        image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
        ports:
        - containerPort: 80
        imagePullPolicy: IfNotPresent
      - name: busybox
        image: registry.cn-shanghai.aliyuncs.com/eci_open/busybox:1.30
        command: ["sleep"]
        args: ["999999"]
        imagePullPolicy: IfNotPresent

ImageCache を指定する

重要

指定されたイメージキャッシュが Ready 状態であることを確認してください。そうでない場合、Pod は作成に失敗します。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: test
  labels:
    app: test
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      name: nginx-test
      labels:
        app: nginx
        alibabacloud.com/eci: "true"
      annotations:
        k8s.aliyun.com/eci-imc-id: imc-2ze5tm5gehgtiiga**** # イメージキャッシュを指定します。
    spec:
      containers:
      - name: nginx
        image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
        ports:
        - containerPort: 80
        imagePullPolicy: IfNotPresent