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

Container Service for Kubernetes:ImageCacheを使用して弾性コンテナインスタンスの作成を高速化

最終更新日:Dec 14, 2024

Alibaba Cloudは、ImageCache CustomResourceDefinition (CRD) を使用して、Elastic Container Instanceのイメージキャッシュ機能を提供します。 この機能により、Kubernetesクラスターでのエラスティックコンテナインスタンスの作成が高速化されます。 このトピックでは、ImageCacheの機能、作成、および使用について説明します。

ImageCacheの概要

ImageCacheは、Elastic Container Instanceによって定義されたリソースタイプを表し、各ImageCacheはイメージキャッシュに対応します。 コンテナを実行する前に、弾性コンテナインスタンスは指定されたイメージをプルする必要があります。 不安定なネットワーク上で大きなイメージをプルすると、伸縮性のあるコンテナインスタンスの起動時間が大幅に遅れる可能性があります。 これを軽減するために、Elastic Container Instanceはイメージキャッシュ機能を提供します。 イメージからキャッシュスナップショットを作成し、キャッシュスナップショットを使用してエラスティックコンテナインスタンスを作成できます。 これにより、イメージレイヤーをダウンロードする必要がなくなり、したがって、柔軟なコンテナインスタンスの作成が加速されます。 詳細については、「イメージキャッシュの概要」をご参照ください。

説明

削減される時間は、イメージキャッシュ内のイメージの数、エラスティックコンテナインスタンスの作成に使用されるイメージのサイズ、およびエラスティックコンテナインスタンスがイメージリポジトリに接続するネットワークによって異なります。

デフォルトでは、ACKサーバーレスクラスターはImageCache CRDと共にデプロイされます。 コマンドkubectl get cr d/imagecaches.eci.alibabacloud.comを実行して、クラスターがImageCacheをサポートしているかどうかを確認します。

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

  • エラーメッセージが返された場合は、クラスターがImageCacheをサポートしていないことを示します。 これを解決するには、ACK仮想ノードコンポーネントを最新バージョンに更新します。

Bイリング

関連付けられたリソースの料金は、ImageCacheの作成および使用中に適用され得る。 詳細については、「イメージキャッシュ課金」をご参照ください。

ImageCacheの作成

次のいずれかの方法を使用して、ImageCacheを作成できます。

移動方法

説明

自動作成

エラスティックコンテナインスタンスを作成するときに、ImageCachesの自動一致を有効にできます。 一致するImageCacheがない場合、システムは自動的にImageCacheを作成し、システムはエラスティックコンテナインスタンスを作成します。 このキャッシュを使用して、同じイメージを持つエラスティックコンテナインスタンスの今後の作成を高速化できます。

手動作成

elasticコンテナインスタンスを初めて作成し、できるだけ迅速に作成したい場合は、YAMLテンプレートを使用して事前にImageCacheを手動で作成できます。 詳細については、「ImageCachesの管理」および「ImageCacheアノテーション」をご参照ください。

説明
  • エラスティックコンテナインスタンスの初回作成時の高速化を除き、自動作成されたImageCachesを使用してコストを節約することを推奨します。

  • 手動で作成されるImageCachesと自動で作成されるImageCachesの違いの詳細については、「ImageCacheを作成する方法」をご参照ください。

ImageCacheの使用

ImageCacheは、さまざまな名前空間でのポッドの作成を高速化するために使用できるクラスターレベルのリソースです。 ImageCacheを使用してポッドを作成する場合は、次の項目に注意してください。

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

  • ポッド内のコンテナーのイメージプルポリシー (ImagePullPolicy) をIfNotPresentに設定して、イメージレイヤーが繰り返しダウンロードされないようにします。

ImageCacheからポッドを作成する場合、ポッド構成ファイルのメタデータにアノテーションを追加して、ImageCacheの自動一致を有効にするか、使用するImageCacheを指定できます。 以下のリストでは、注釈について説明します。

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

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

ImageCacheの使用方法

注釈

値の例

説明

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

k8s.aliyun.com/eci-auto-imc

"true"

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

画像キャッシュが正確に一致しない場合、システムはポッドを作成するときに対応する画像キャッシュを自動的に作成します。

k8s.aliyun.com/imc-perfect-match

"true"

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

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

"2"

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

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

k8s.aliyun.com/eci-imc-id

imc-2zebxkiifuyzzlhl ****

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

重要
  • ポッドの構成ファイルのメタデータに注釈を追加する必要があります。 たとえば、配置を作成するときは、spec.template.metadataセクションに注釈を追加する必要があります。

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

例1: 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"   # Enables automatic match of image caches
        k8s.aliyun.com/imc-perfect-match: "true"  # Specifies that all container images in the pod must match the image cache.
    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: ImageCacheの指定

重要

指定されたイメージキャッシュが準備状態であることを確認します。 そうしないと、ポッドの作成に失敗します。

apiVersion: apps/v1
kind: 配置
メタデータ:
  name: test
  ラベル:
    アプリ: テスト
spec:
  レプリカ:2
  セレクタ:
    matchLabels:
      アプリ:nginx
  template:
    metadata:
      名前: nginx-test
      ラベル:
        アプリ:nginx
        alibabacloud.com/eci: "true" 
      アノテーション:
        k8s.aliyun.com/eci-imc-id: imc-2ze5tm5gehgtiiga ****# イメージキャッシュを指定します。
    仕様:
      containers:
      - name: nginx
        画像: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
        ポート:
        - containerPort: 80
        imagePullPolicy: IfNotPresent 
説明

eci-profileのElastic Container Instance Effectは、ImageCache関連のアノテーションをポッドに動的に追加することで、イメージキャッシュ機能を自動的に使用できます。 詳細については、「ImageCache機能を自動的に使用するようにeci-profileを設定する」をご参照ください。