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

Container Service for Kubernetes:コンテナイメージのオンデマンド読み込みを使用してコンテナの起動を高速化する

最終更新日:Nov 09, 2025

コンテナイメージは、レイヤーに保存された圧縮データです。コンテナが起動すると、コンテナーランタイムは通常、イメージデータをレイヤーごとにダウンロードして解凍します。ほとんどのビジネスシナリオでは、コンテナーランタイムはコンテナイメージからデータの一部を読み取るだけで済みます。不要なデータのダウンロードと解凍は、システムリソースを消費し、コンテナの起動時間を増加させます。Alibaba Cloud Container Service for Kubernetes (ACK) は、Data Accelerator for Disaggregated Infrastructure (DADI) テクノロジーに基づいてコンテナイメージのオンデマンド読み込みをサポートしています。この機能により、イメージ全体のダウンロードを回避し、イメージデータをオンザフライで解凍できるため、アプリケーションの起動時間が大幅に短縮されます。

高速化の効果は、イメージサイズやイメージリポジトリのネットワーク条件などの要因によって異なります。テストによると、Docker Hub からの 1.34 GB の NodeBB イメージの場合、イメージのプルフェーズには 36 秒かかり、アプリケーションの合計起動時間は 38 秒です。高速化イメージを使用すると、イメージのプルフェーズはわずか 4 秒で、アプリケーションの合計起動時間はわずか 9 秒です。

重要

このトピックで提供されるイメージのプル時間は、参考用です。実際のデータは、お使いの動作環境によって異なります。

制限事項

  • 次の要件を満たす ACK マネージドクラスター のみがサポートされます。

  • DADI のフルモードのみがサポートされます。インデックスのみのモードはサポートされていません。

ステップ 1: 高速化イメージの取得

オープンソースツールを使用するか、ACR Enterprise Edition が提供するコンテナイメージのオンデマンド読み込み機能を使用して、既存のコンテナイメージを DADI 高速化イメージフォーマットに変換できます。

オープンソースツールの使用

DADI を使用して、既存のコンテナイメージを DADI イメージフォーマットに変換できます。

  1. 次のコマンドを実行して、snapshotter 依存関係をインストールします。

    # インスタンスアーキテクチャのインストールパッケージをダウンロードします。
    wget https://github.com/containerd/accelerated-container-image/releases/download/v1.2.3/overlaybd-snapshotter-1.2.3-20241016090917.0c2f057.x86_64.rpm
    rpm -ivh overlaybd-snapshotter-1.2.3-20241016090917.0c2f057.x86_64.rpm 
  2. 次のコマンドを実行して、overlaybd 依存関係をインストールします。

    # インスタンスアーキテクチャのインストールパッケージをダウンロードします。
    wget https://github.com/containerd/overlaybd/releases/download/v1.0.13/overlaybd-1.0.13-20240821.a117098.el8.x86_64.rpm
    rpm -ivh overlaybd-1.0.13-20240821.a117098.el8.x86_64.rpm
  3. 次のコマンドを実行して、イメージを変換します。

    この例では、ACR イメージリポジトリを使用します。セルフマネージドイメージリポジトリを使用する場合は、コマンド内のイメージアドレスとアカウント認証情報を変更する必要があります。

    /opt/overlaybd/snapshotter/convertor -u user:password -r xxxxx-registry.cn-hangzhou.cr.aliyuncs.com/default/redis -i latest -o latest_obd_new

ACR Enterprise Edition の使用

ACR Enterprise Edition (Standard または Premium) では、リポジトリレベルでコンテナイメージのオンデマンド読み込みを設定できます。この機能は、プッシュした元のイメージを自動的に高速化イメージに変換します。変換時間はイメージサイズによって異なり、元のイメージには影響しません。詳細と制限事項については、「コンテナイメージのオンデマンド読み込み」をご参照ください。

説明

高速化イメージの名前空間とリポジトリ名は、元のイメージと同じです。高速化イメージのタグは、元のイメージの tag_accelerated サフィックスが付いたものです。

  1. Container Registry コンソールにログインします。トップメニューバーで、リージョンを選択します。

  2. 左側のナビゲーションウィンドウで、[インスタンス] をクリックします。[インスタンス] ページで、管理する Enterprise Edition インスタンスの名前をクリックします。

  3. 左側のナビゲーションウィンドウで、[リポジトリ管理] > [イメージリポジトリ] を選択します。

  4. 管理するリポジトリの名前をクリックします。[詳細] ページで、左上隅にある [編集] をクリックします。

  5. [基本情報の変更] ダイアログボックスで、[イメージの高速化] を有効にし、[フルモード] を選択して、[OK] をクリックします。

    説明

    イメージの高速化を設定すると、その後プッシュされたイメージは自動的に変換タスクをトリガーします。イメージ変換の完了時に通知を受け取るには、イベント通知を設定できます。たとえば、式を _accelerated$ に設定します。詳細については、「イベント通知」をご参照ください。

ステップ 2: ノードプールでコンテナイメージの高速化機能を有効にする

DADI 高速化イメージをサポートするには、ACK コンソールで新規または既存のノードプールに対して [コンテナイメージの高速化] を有効にできます。

新しいノードプールで有効にする

  1. ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. クラスター ページで、管理するクラスターを見つけてその名前をクリックします。左側のナビゲーションウィンドウで、[ノード] > [ノードプール] を選択します。

  3. [ノードプール] ページで、[詳細オプション] セクションの [Container Registry の高速化] を有効にします。詳細については、「ノードプールの作成と管理」をご参照ください。

既存のノードプールで有効にする

[コンテナイメージの高速化] を有効または無効にすると、変更は新しいノードにのみ適用されます。変更を既存のノードに適用するには、ノードプールからノードを削除してから、ノードプールに再度追加する必要があります。詳細については、「ノードの削除」および「既存ノードの追加」をご参照ください。

  1. ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. クラスター ページで、管理するクラスターを見つけてその名前をクリックします。左側のナビゲーションウィンドウで、[ノード] > [ノードプール] を選択します。

  3. [ノードプール] ページで、ターゲットノードプールを見つけ、[アクション] 列の [編集] をクリックします。[詳細オプション] セクションで、[Container Registry の高速化] を選択し、画面の指示に従ってノードプールの ConfigMap を更新します。

    [ノードプール] ページで、ノードプールの [ステータス] 列に [更新中] が表示されている場合、ノードプールは更新中です。[アクティブ] が表示されている場合、更新は完了です。

ステップ 3: 高速化イメージを使用してアプリケーションを作成する

1. コンテナイメージのプル資格情報の設定

aliyun-acr-acceleration-suite コンポーネントのインストール

  1. ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. クラスター ページで、管理するクラスターを見つけてその名前をクリックします。左側のナビゲーションウィンドウで、[アドオン] をクリックします。

  3. [アドオン] ページで、[その他] セクションの aliyun-acr-acceleration-suite コンポーネントを見つけ、[インストール] をクリックします。

プル資格情報の設定

説明

アプリケーションがプライベートイメージをプルするためにシークレットを使用する必要がない場合は、このステップをスキップして「高速化イメージを使用するアプリケーションの作成」に進むことができます。

次のいずれかの方法でイメージのプル資格情報を設定できます。

  • ACR Enterprise Edition インスタンスのパスワードフリープラグインを設定する

    パスワードフリープラグインをインストールして設定します。ACK クラスターにパスワードフリープラグインを正しくインストールすると、システムは ACR リポジトリのアクセス資格情報を対象のワークロードに自動的に挿入します。アクセス資格情報のライフサイクルやワークロードとの関連付けを手動で管理する必要はありません。詳細については、「シークレットなしで ACR イメージをプルする」をご参照ください。

  • セルフマネージドイメージリポジトリの Secret を手動で作成する

    次のコマンドを実行して、kubernetes.io/dockerconfigjson タイプの Secret を作成し、コンテナイメージリポジトリのアクセス資格情報を設定します。

    kubectl create secret docker-registry <SecretName> --docker-server=<RegistryVpcDomain> --docker-username=<UserName> --docker-password=<Password>

    次のコマンドを実行して、ラベル images.alibabacloud.com/accelerated: true を Secret に追加します。

    kubectl label secrets <SecretName>  images.alibabacloud.com/accelerated="true"

2. 高速化イメージを使用するアプリケーションの作成

次のサンプル YAML コンテンツを使用して Pod を作成します。Pod は、イメージの高速化が有効になっているノードにスケジュールされます。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      nodeSelector:
        alibabacloud.com/image-accelerate-enabled: "true" # ここにノードセレクターラベルを追加します。
      containers:
        - name: test
          image: xxxxx-registry.cn-hangzhou.cr.aliyuncs.com/default/redis:latest_obd_new # ここに高速化イメージのアドレスを入力します。
          command: ["sleep", "3600"]

関連ドキュメント

データディスクのスナップショットを使用してワークロードとノードの初期化を高速化するには、「データディスクのスナップショットを使用して大規模モデルアプリケーションの起動を高速化する」をご参照ください。