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