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

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

最終更新日:Jan 14, 2025

Alibaba Cloud は、ImageCache CustomResourceDefinition (CRD) の形式で Elastic Container Instance の ImageCache 機能を提供しています。この方法で、Elastic Container Instance の ImageCache 機能を使用して、Kubernetes での Pod の作成を高速化できます。このトピックでは、ImageCache を使用して Pod の作成を高速化する方法について説明します。

構成の説明

ImageCache はクラスタレベルのリソースです。 ImageCache を使用すると、クラスタ内の異なる名前空間で Pod の作成を高速化できます。

ImageCache を使用して Pod を作成する場合、Pod 構成ファイルのメタデータにアノテーションを追加して、イメージキャッシュの自動一致を有効にするか、使用するイメージキャッシュを指定できます。次の表に、アノテーションを示します。

説明
  • イメージキャッシュの自動一致を有効にすることをお勧めします。イメージキャッシュの自動一致を有効にし、使用するイメージキャッシュを指定することで Pod の作成を高速化する場合は、後者が優先されます。詳細については、ImageCache 機能の概要 を参照してください。

  • イメージキャッシュの自動一致を有効にしてビジネスに ImageCache を使用する場合、imc-perfect-match パラメータまたは imc-match-count-request パラメータを構成できます。imc-perfect-match パラメータを構成することをお勧めします。2 つのパラメータの両方を構成すると、imc-perfect-match パラメータが優先されます。

ImageCache の使用方法

アノテーション

値の例

説明

イメージキャッシュの自動一致を有効にする

k8s.aliyun.com/eci-auto-imc

"true"

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

完全に一致するイメージキャッシュがない場合、システムは Pod を作成するときに、対応するイメージキャッシュを自動的に作成します。

k8s.aliyun.com/imc-perfect-match

"true"

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

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

"2"

イメージキャッシュと完全に一致させたい Pod 内のコンテナイメージの数を指定します。

使用するイメージキャッシュを指定する

k8s.aliyun.com/eci-imc-id

imc-2zebxkiifuyzzlhl****

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

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

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

構成例

ImageCache を使用して Pod を作成する場合は、次の点に注意してください。

  • 一致度を向上させるために、Pod 内のコンテナのイメージキャッシュにイメージを指定します。

  • イメージレイヤーの重複ダウンロードを防ぐために、Pod 内のコンテナのイメージプルポリシー (ImagePullPolicy) を IfNotPresent に設定します。

例 1: イメージキャッシュの自動一致を有効にする

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

例 2: Pod を作成するイメージキャッシュを指定する

重要

指定されたイメージキャッシュが 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