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

Container Service for Kubernetes:遅延読み込みによるコンテナ起動の高速化

最終更新日:Mar 27, 2026

コンテナイメージは圧縮されたレイヤーとして保存されます。コンテナを起動する際、ランタイムはコンテナが実行可能になる前にすべてのレイヤーをダウンロードして解凍します。ただし、ほとんどのビジネスシナリオでは、コンテナランタイムが実際に必要とするのはコンテナイメージ内のデータの一部にすぎません。大規模なイメージの場合、この不要なダウンロードが起動時間の大半を占めてしまいます。

Container Service for Kubernetes (ACK) は、Disaggregated Infrastructure 向けデータアクセラレーター (DADI) を使用したコンテナイメージの遅延読み込みをサポートしています。DADI では、事前にフルイメージをプルする代わりに、コンテナが実際に必要とするデータのみを読み込み、その場で解凍します。

Docker Hub の 1.34 GB の NodeBB イメージを使用した場合、遅延読み込みによりイメージプルフェーズが 36 秒から 4 秒に短縮され、アプリケーション全体の起動時間が 38 秒から 9 秒に短縮されます。

重要

上記のイメージプル時間は参考値です。実際のパフォーマンスはイメージサイズやネットワーク条件によって異なります。

制限事項

制約項目 要件
クラスタータイプ ACK マネージドクラスターのみ。
クラスターバージョン 1.26 以降。詳細については、「クラスターの手動アップグレード」をご参照ください。
ノードランタイム containerd 1.6.34 以降。詳細については、「ノードプールの更新」をご参照ください。
DADI モード フルモードのみ。インデックス専用モードはサポートされていません。

重要な動作 — ノードプールでコンテナイメージアクセラレーションを有効または無効にしても、その後に追加されたノードにのみ影響します。 既存のノードに変更を適用するには、ノードをノードプールから削除して再度追加してください。詳細については、「ノードの削除」および「既存ノードの追加」をご参照ください。

前提条件

作業を開始する前に、以下の条件を満たしていることを確認してください。

  • Kubernetes 1.26 以降を実行し、ノードランタイムとして containerd 1.6.34 以降を使用している ACK マネージドクラスター

  • イメージリポジトリへのアクセス権(ACR Enterprise Edition(標準またはプレミアム)または自己管理型レジストリのいずれか)

  • クラスターへの kubectl アクセス権

ステップ 1:アクセラレートイメージの取得

アクセラレートイメージは DADI フォーマットを使用します。既存のイメージは、ACR Enterprise Edition の組み込み変換機能(推奨)またはオープンソースの DADI ツールを使用して変換できます。

オプション 1:ACR Enterprise Edition の使用(推奨)

ACR Enterprise Edition(標準またはプレミアム)は、リポジトリレベルで自動的にイメージを変換します。イメージをプッシュすると、ACR は元のイメージを変更せずにアクセラレートコピーを作成します。アクセラレートイメージは同じ名前空間とリポジトリ名を使用し、タグに _accelerated が追加されます(例:latestlatest_accelerated)。

詳細および制限事項については、「コンテナイメージの遅延読み込み」をご参照ください。

  1. Container Registry コンソールにログインし、リージョンを選択します。

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

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

  4. リポジトリ名をクリックします。[詳細] ページの左上隅で [編集] をクリックします。

  5. [設定の変更] ダイアログボックスで、[アクセラレートイメージ] を有効にし、[フルモード] を選択して、[確認] をクリックします。この変更後にプッシュされたイメージは、自動的に変換タスクをトリガーします。変換完了時に通知を受け取るには、式 _accelerated$ を使用してイベント通知を設定してください。詳細については、「イベント通知」をご参照ください。

オプション 2:オープンソース DADI ツールの使用

DADI イメージコンバーター を使用して、手動でイメージを変換します。

  1. overlaybd スナップショッターをインストールします。

    # ご利用のインスタンスアーキテクチャ向けのパッケージをダウンロードします。
    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 リポジトリ内のイメージを変換します。自己管理型レジストリを使用する場合は、イメージアドレスと認証情報を適宜更新してください。

    プレースホルダー 説明
    user:password レジストリの認証情報
    xxxxx-registry.cn-hangzhou.cr.aliyuncs.com/default/redis ソースイメージリポジトリのアドレス
    latest ソースイメージタグ (-i)
    latest_obd_new 出力イメージタグ (-o)
    /opt/overlaybd/snapshotter/convertor \
      -u user:password \
      -r xxxxx-registry.cn-hangzhou.cr.aliyuncs.com/default/redis \
      -i latest \
      -o latest_obd_new

    以下のプレースホルダーを置き換えてください。

ステップ 2:ノードプールでのコンテナイメージアクセラレーションの有効化

新規および既存のノードプールの両方で コンテナイメージアクセラレーション がサポートされています。手順は若干異なります。

新規ノードプールでの有効化

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

  2. クラスター名をクリックします。左側のナビゲーションウィンドウで [ノード] > [ノードプール] を選択します。

  3. ノードプールの作成時[詳細オプション] を展開し、[コンテナイメージアクセラレーション] を有効にします。

既存ノードプールでの有効化

重要

コンテナイメージアクセラレーション の変更は、変更後にノードプールに追加されたノードにのみ適用されます。既存のノードには影響しません。既存ノードにこの機能を適用するには、ノードを削除して再度追加してください。詳細については、「ノードの削除」および「既存ノードの追加」をご参照ください。

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

  2. クラスター名をクリックします。左側のナビゲーションウィンドウで [ノード] > [ノードプール] を選択します。

  3. ノードプールを見つけ、[操作] 列の [編集] をクリックします。[詳細オプション] セクションで、[コンテナイメージアクセラレーション] を有効にし、画面の指示に従ってノードプールの ConfigMap を更新します。更新中は [ステータス] 列に Updating が表示され、完了すると Active になります。

ステップ 3:アクセラレートイメージを使用したアプリケーションのデプロイ

イメージプル認証情報の設定

DADI が遅延読み込み時にイメージレジストリに対して認証できるように、aliyun-acr-acceleration-suite コンポーネントをインストールします。

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

  2. クラスター名をクリックします。左側のナビゲーションウィンドウで [アドオン] をクリックします。

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

インストール後、レジストリタイプに応じてプル認証情報を設定します。

ACR Enterprise Edition: パスワード不要プラグインをインストールして、対象ワークロードに自動的にアクセス認証情報を注入します。これにより、シークレットの手動管理が不要になります。詳細については、「シークレットなしで ACR イメージをプルする」をご参照ください。

自己管理型レジストリ: タイプが kubernetes.io/dockerconfigjson のシークレットを作成し、アクセラレーションスイートが使用できるようにラベルを付与します。

# シークレットを作成します。
kubectl create secret docker-registry <SecretName> \
  --docker-server=<RegistryVpcDomain> \
  --docker-username=<UserName> \
  --docker-password=<Password>

# DADI 用にシークレットにラベルを付与します。
kubectl label secrets <SecretName> images.alibabacloud.com/accelerated="true"
説明

プライベートイメージをプルする際にシークレットが不要な場合は、この手順をスキップできます。

アプリケーションの作成

ノードセレクターを使用して、イメージアクセラレーションが有効なノードにポッドをスケジュールします。ラベル alibabacloud.com/image-accelerate-enabled: "true" は、アクセラレーションが有効なノードに自動的に適用されます。

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"]

マニフェストを適用します。

kubectl apply -f deployment.yaml

次のステップ

参照