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

Elastic Container Instance:eci-profile によるイメージキャッシュの自動利用設定

最終更新日:Sep 11, 2026

eci-profile の ECI Effect 機能を使用すると、セレクターを定義して、一致する Pod にイメージキャッシュ関連のアノテーションを自動的に挿入できます。Pod がセレクターのラベル条件に一致すると、システムは手動での介入なしに指定されたアノテーションを追加します。これにより、個々の Pod スペックを変更することなく、Pod の作成を高速化できます。

注: eci-profile の背景情報については、「eci-profile の設定」をご参照ください。

前提条件

開始する前に、以下が準備できていることを確認してください:

  • ECI が有効化された Kubernetes クラスターへのアクセス

  • kube-system 名前空間にある eci-profile ConfigMap を編集する権限

  • クラスターと通信するように設定された kubectl

仕組み

eci-profile は、ミューテーティング Webhook (vk-webhook) を使用して Pod 作成リクエストをインターセプトします。Pod が作成されると、Webhook は Pod のラベルと Pod が属する名前空間のラベルを、eci-profile で定義されたセレクターと照合します。一致が見つかった場合、Webhook は対応するアノテーションを Pod に挿入し、イメージキャッシュによる高速化を自動的に有効にします。

イメージキャッシュのアノテーション

Pod の作成時にイメージキャッシュがどのように使用されるかは、以下のアノテーションによってコントロールされます。

アノテーション値の例説明
k8s.aliyun.com/eci-auto-imc"true"自動イメージキャッシュマッチングを有効にします。"true" に設定すると、システムはイメージの一致度、イメージサイズ、作成時刻に基づいて最適なイメージキャッシュを選択します。完全に一致するキャッシュが存在しない場合、Pod の作成時に新しいイメージキャッシュが作成されます。デフォルト値: "true"。
k8s.aliyun.com/imc-perfect-match"true"Pod 内のすべてのコンテナイメージがイメージキャッシュと完全に一致することを要求します。デフォルト値: "false"。
k8s.aliyun.com/imc-match-count-request"2"Pod 内でイメージキャッシュと完全に一致させたいコンテナイメージの数を指定します。
k8s.aliyun.com/eci-imc-idimc-2zebxkiifuyzzlhl****ID によって Pod を特定のイメージキャッシュに固定します。

セレクターのフィールド

eci-profile の selectors 配列内の各セレクターには、以下のフィールドがあります:

フィールド必須説明
nameはいセレクターの一意の名前。
namespaceSelectorいいえ名前空間のラベルに基づいて Pod をマッチングします。省略した場合、すべての名前空間が対象となります。
objectSelectorいいえPod のラベルに基づいて Pod をマッチングします。省略した場合、一致する名前空間内のすべての Pod が対象となります。
effect.annotationsはい一致した Pod に挿入するアノテーション。

namespaceSelector.matchLabels または objectSelector.matchLabels で複数のラベルが指定された場合、すべてのラベルが一致する必要があります (AND ロジック)。

セレクターの設定

  1. eci-profile ConfigMap を開いて編集します:

    kubectl -n kube-system edit cm eci-profile
  2. selectors フィールドにセレクターを配列形式で追加します:

    selectors: |
     [
      {
          "name": "demo",
          "namespaceSelector": {
              "matchLabels": {
                  "app": "nginx"
              }
          },
          "objectSelector": {
              "matchLabels": {
                  "type": "test"
              }
          },
          "effect": {
              "annotations": {
                  "k8s.aliyun.com/eci-auto-imc": "true"
              }
          }
      }
     ]
  3. エディターを保存して終了します。Kubernetes は変更を自動的に適用します。

設定の確認

次のコマンドを実行して、セレクターがアクティブであることを確認します:

kubectl get mutatingwebhookconfigurations -o yaml vk-webhook

返された YAML に設定したセレクターが含まれている場合、セレクターは有効になっています。セレクターが存在しない場合は、ConfigMap の selectors フィールドに JSON フォーマットのエラーがないか確認してください。

例

以下の例では、異なるマッチング戦略を持つ 2 つのセレクターを定義します。

eci-profile ConfigMap を編集します:

kubectl -n kube-system edit cm eci-profile

selectors フィールドに以下の内容を追加します:

[
  ...
  {
    "name": "image-cache-selector-1",
    "objectSelector": {
      "matchLabels": {
        "image-cache": "true"
      }
    },
    "effect": {
      "annotations": {
        "k8s.aliyun.com/eci-imc-id": "imc-uf6ic***************"
      }
    }
  },
  {
    "name": "image-cache-selector-2",
    "namespaceSelector": {
      "matchLabels": {
        "image-cache": "true"
      }
    },
    "effect": {
      "annotations": {
        "k8s.aliyun.com/eci-auto-imc": "true"
      }
    }
  }
]

各セレクターの仕組み:

  • image-cache-selector-1: image-cache: true ラベルを持つ Pod には、アノテーション k8s.aliyun.com/eci-imc-id: imc-uf6ic*************** が自動的に挿入され、指定されたイメージキャッシュに固定されます。

  • image-cache-selector-2: image-cache: true ラベルを持つ名前空間で作成された Pod には、アノテーション k8s.aliyun.com/eci-auto-imc: "true" が自動的に挿入され、その名前空間内のすべての Pod で自動イメージキャッシュマッチングが有効になります。

次のステップ