Alibaba Cloudは、ImageCache CustomResourceDefinition (CRD) の方法でElastic Container Instanceのイメージキャッシュ機能を提供します。 これにより、Elastic Container Instanceのイメージキャッシュ機能を使用して、Kubernetesでのポッドの作成を高速化できます。 このトピックでは、ImageCacheを使用してポッドの作成を高速化する方法について説明します。
説明
ImageCacheはクラスターレベルのリソースです。 ImageCacheを使用すると、クラスター内の異なる名前空間でのポッドの作成を高速化できます。
ImageCacheに基づいてポッドを作成する場合、ポッド構成ファイルのメタデータにアノテーションを追加して、ImageCacheの自動一致を有効にするか、使用するImageCacheを指定できます。 次の注釈に注意してください。
k8s.aliyun.com/eci-image-cache: ImageCacheの自動一致を有効にし、一致ポリシーに基づいて最適なImageCacheを選択してポッドを作成します。 一致するImageCacheがない場合、システムはポッドを作成するときに自動的にImageCacheを作成します。
k8s.aliyun.com/eci-image-snapshot-id: は、ポッドを作成するImageCacheを指定します。
k8s.aliyun.com/eci-image-cache
とk8s.aliyun.com/eci-image-snapshot-id
の両方が設定されている場合、k8s.aliyun.com/eci-image-snapshot-idが使用されます。 詳細については、「イメージキャッシュ機能の概要」をご参照ください。
ImageCacheを使用してポッドを作成する場合は、次の対策を講じることをお勧めします。
一致度を向上させるには、コンテナのImageCacheでイメージを指定します。
コンテナのイメージプルポリシー (ImagePullPolicy) をIfNotPresentに設定して、イメージレイヤーが繰り返しダウンロードされないようにします。
ImageCacheに自動的に一致
ポッドを作成するときに、アノテーションを追加してImageCacheの自動一致を有効にし、ポッドの作成を高速化できます。 次に、Elastic Container Instanceは、一致ポリシーに基づいてImageCacheリストから最適なImageCacheを選択します。 ImageCacheは、ImageCacheの一致度、ImageCacheのサイズ、ImageCacheが作成された時点の要素に基づいて優先度の高い順に一致します。
一致するImageCacheがない場合、システムはポッドを作成するときに自動的にImageCacheを作成します。
サンプル配置
apiVersion: apps/v1 kind: 配置 メタデータ: name: nginx-deployment labels: アプリ: nginx spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: labels: app: nginx annotations: k8s.aliyun.com/eci-image-cache: "true"# ImageCacheの自動一致を有効にします。 spec: nodeName: virtual-kubelet containers: - name: nginx image: nginx:1.7.9 imagePullPolicy: IfNotPresent
サンプルポッド
apiVersion: v1 種類: ポッド メタデータ: annotations: k8s.aliyun.com/eci-image-cache: "true"# ImageCacheの自動一致を有効にします。 名前: nginx-auto-match spec: containers: -画像: nginx:1.7.9 imagePullPolicy: IfNotPresent name: nginx resources: limits: cpu: 300m memory: 200Mi requests: cpu: 200m メモリ: 100Mi nodeName: virtual-kubelet
ポッドの作成に使用するImageCacheの指定
ポッドを作成するときに、ポッドの作成を高速化するために使用するImageCacheを指定する注釈を追加できます。
指定されたImageCacheが準備状態であることを確認します。 ImageCacheが別の状態の場合、ポッドは作成できません。
サンプル配置
apiVersion: apps/v1 kind: 配置 メタデータ: name: nginx-deployment labels: アプリ: nginx spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: labels: app: nginx annotations: k8s.aliyun.com/eci-image-snapshot-id: imc-2ze5tm5gehgtiiga ****# ImageCacheを指定します。 spec: nodeName: virtual-kubelet containers: - name: nginx image: nginx:1.7.9 imagePullPolicy: IfNotPresent
サンプルポッド
apiVersion: v1 種類: ポッド メタデータ: annotations: k8s.aliyun.com/eci-image-snapshot-id: imc-2ze5tm5gehgtiiga ****# ImageCacheを指定します。 名前: nginx-imagecache-id spec: containers: -画像: nginx:1.7.9 imagePullPolicy: IfNotPresent name: nginx resources: limits: cpu: 300m memory: 200Mi requests: cpu: 200m メモリ: 100Mi nodeName: virtual-kubelet