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

Elastic Container Instance:イメージキャッシュの管理

最終更新日:Dec 28, 2024

Alibaba Cloudは、ImageCache CustomResourceDefinition(CRD)を使用してElastic Container Instanceのイメージキャッシュ機能を提供します。この方法で、Elastic Container Instanceのイメージキャッシュ機能を使用して、KubernetesのElastic Container InstanceベースのPodの作成を高速化できます。このトピックでは、イメージキャッシュと、イメージキャッシュの作成、クエリ、削除の方法について説明します。

準備

Kubernetesクラスターにログオンし、次のコマンドを実行して、Kubernetesクラスターがイメージキャッシュをサポートしているかどうかを確認します。

kubectl get crd/imagecaches.eci.alibabacloud.com
  • エラーが返された場合、クラスターはイメージキャッシュをサポートしていません。出力例:

    Error from server (NotFound): customresourcedefinitions.apiextensions.k8s.io "imagecaches.eci.alibabacloud.com" not found

    クラスターがイメージキャッシュをサポートしていない場合は、ack-virtual-nodeコンポーネントをイメージキャッシュをサポートするバージョンに更新します。

    説明

    新機能を使用するには、ack-virtual-nodeコンポーネントを最新バージョンに更新することをお勧めします。

  • imagecaches.eci.alibabacloud.comに関する情報が返された場合、Kubernetesクラスターはイメージキャッシュをサポートしています。出力例:

    NAME                               CREATED AT
    imagecaches.eci.alibabacloud.com   2024-01-23T05:54:44Z

    クラスター内のImageCache CRDが最新バージョンでない場合は、kubectl applyコマンドを実行して、ImageCache CRDを最新バージョンに更新することをお勧めします。

    kubectl apply -f imagecache-crd-sample.yaml

    展開してimagecache-crd-sample.yamlを表示

    apiVersion: apiextensions.k8s.io/v1beta1
    kind: CustomResourceDefinition
    metadata:
      name: imagecaches.eci.alibabacloud.com
    spec:
      group: eci.alibabacloud.com
      version: v1
      names:
        kind: ImageCache
        plural: imagecaches
        shortNames:
        - ic
        categories:
        - all
      scope: Cluster
      subresources:
        status: {}
      validation:
        openAPIV3Schema:
          required:
          - spec
          properties:
            spec:
              type: object
              required:
              - images
              properties:
                imagePullSecrets:
                  type: array
                  items:
                    type: string
                images:
                  minItems: 1
                  type: array
                  items:
                    type: string
                imageCacheSize:
                  type: integer
                retentionDays:
                  type: integer
      additionalPrinterColumns:
      - name: Age
        type: date
        JSONPath: .metadata.creationTimestamp
      - name: CacheId
        type: string
        JSONPath: .status.imageCacheId
      - name: Phase
        type: string
        JSONPath: .status.phase
      - name: Progress
        type: string
        JSONPath: .status.progress

イメージキャッシュの構成

次のコードは、イメージキャッシュのYAML構成ファイルを提供します。詳細については、Kubernetes ImageCache APIを参照してください。

apiVersion: eci.alibabacloud.com/v1
kind: ImageCache
metadata:
  name: imagecache-sample
  annotations:
    k8s.aliyun.com/imc-enable-reuse: "true" # イメージキャッシュの再利用機能を有効にします。
spec:
  images:
  - centos:latest
  - busybox:latest
  imagePullSecrets:
  - default:secret1
  - default:secret2
  - kube-system:secret3
  imageCacheSize:
   25
  retentionDays:
   7

パラメーターの説明:

パラメーター

タイプ

必須

説明

spec.images

String[]

はい

イメージキャッシュの作成に使用できるコンテナーイメージ。

spec.imagePullSecrets

String[]

いいえ

プライベートイメージリポジトリのシークレット。

  • spec.imagesパラメーターで指定されたイメージがプライベートイメージリポジトリにある場合、namespace:secretName形式でプライベートイメージリポジトリのシークレットを構成する必要があります。

  • spec.imagesのすべてのイメージがパブリックイメージの場合、このパラメーターを指定する必要はありません。

spec.imageCacheSize

int

いいえ

イメージキャッシュのサイズ。単位:GiB。デフォルト値:20。有効な値:20~32768。

イメージのサイズに基づいて値を設定します。イメージキャッシュのサイズは、イメージサイズの2倍以上である必要があります。

spec.retentionDays

int

いいえ

イメージキャッシュの保持期間。指定された保持期間が終了すると、イメージキャッシュは削除されます。単位:日。このパラメーターはデフォルトでは空のままです。これは、イメージキャッシュが期限切れにならないことを示します。

説明

イメージキャッシュのYAML構成ファイルにアノテーションを追加して、イメージキャッシュ機能を最大限に活用できます。たとえば、上記のYAMLファイルでは、k8s.aliyun.com/imc-enable-reuse: "true"アノテーションを追加して、イメージキャッシュの再利用機能を有効にしています。詳細については、イメージキャッシュのアノテーションを参照してください。

イメージキャッシュの作成

  1. イメージキャッシュを作成します。

    kubectl create -f imagecache-test.yaml

    imagecache-test.yamlファイルの例:

    apiVersion: eci.alibabacloud.com/v1
    kind: ImageCache
    metadata:
      name: imagecache-sample-test
      annotations:
        k8s.aliyun.com/imc-enable-reuse: "true" # イメージキャッシュの再利用機能を有効にします。
    spec:
      images:
      - registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
      - registry.cn-shanghai.aliyuncs.com/eci_open/busybox:1.30
      imageCacheSize:
       25
      retentionDays:
       7
  2. イメージキャッシュのステータスを表示します。

    kubectl get imagecache imagecache-sample-test

    次のサンプルコードは、出力例を示しています。イメージキャッシュがReady状態の場合、イメージキャッシュは作成され、使用できます。

    NAME                     AGE     CACHEID                    PHASE   PROGRESS
    imagecache-sample-test   5m30s   imc-2ze2kbf9l1onf03z****   Ready   100%

イメージキャッシュのクエリ

クラスター内のイメージキャッシュまたはイメージキャッシュリストに関する詳細をクエリできます。

  • クラスター内のイメージキャッシュリストをクエリする

    kubectl get imagecache
  • イメージキャッシュの詳細をクエリする

    kubectl get imagecache <imagecache-name> -o yaml

イメージキャッシュの削除

イメージキャッシュはスナップショットです。手動で作成したイメージキャッシュを保持する場合、スナップショットのコストを支払う必要があります。イメージキャッシュを使用しなくなった場合は、タイムリーに手動で削除することをお勧めします。

イメージキャッシュを削除するには、次のコマンドを実行します。

kubectl delete imagecache <imagecache-name>