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を設定する」をご参照ください。