コンテナは、起動前に従来のコンテナイメージパッケージをダウンロードして解凍する必要があります。ただし、コンテナの起動時に必要なのはイメージコンテンツの一部のみである場合があります。現在必要のないイメージコンテンツを読み込むと、時間の消費量が増加します。Container Registry (ACR) Enterprise Editionは、イメージをビルドおよびホストするためのData Accelerator for Disaggregated Infrastructure (DADI)機能を提供します。Container Compute Service (ACS)はDADI overlaybdを統合しており、コンテナがオンデマンドでイメージを読み込むことができるため、コンテナの起動時間を大幅に短縮できます。このトピックでは、Container Registry Enterprise Editionを使用して高速化イメージをビルドし、それを使用してACS クラスタ内のコンテナの起動を高速化する方法について説明します。
前提条件
ACS クラスタが作成されていること。詳細については、「ACS クラスタを作成する」をご参照ください。
ベーシックまたはアドバンスト Container Registry Enterprise Editionインスタンスが作成されていること。詳細については、「Container Registry Enterprise Edition インスタンスを作成する」をご参照ください。
ACS クラスタにアクセスするために、Container Registry Enterprise Editionインスタンスのアクセス制御が構成されていること。VPC を介してACS クラスタにアクセスするには、VPC ACL を構成します。詳細については、「VPC ACL を構成する」をご参照ください。インターネット経由でACS クラスタにアクセスするには、ACS クラスタをホワイトリストに追加します。詳細については、「インターネット経由のアクセスを構成する」をご参照ください。
インデックスのみモードを使用してコンテナの起動を高速化するには、Container Registryカスタマーサポートに連絡して、試用版のホワイトリストに追加されるように申請してください。
背景情報
DADI 高速化イメージを使用して、ワークロードの起動、オンデマンドでのイメージの読み込み、オンラインでのイメージパッケージの解凍を高速化できます。これにより、アプリケーションの伝播とスケーリングの効率が大幅に向上します。詳細については、「コンテナイメージのリソースをオンデマンドで読み込む」をご参照ください。
高速化は、イメージサイズとイメージリポジトリのネットワーク条件によって異なります。テストでは、アプリケーションがDocker HubからNodeBB イメージ (1.34 GB) をプルするのに36 秒かかり、アプリケーションが起動するのに38 秒かかることが示されています。高速化イメージをプルするのに必要な時間はわずか 4 秒で、アプリケーションが起動するのに必要な時間はわずか 9 秒です。
制限事項
マルチアーキテクチャイメージは、高速化イメージに変換できません。
ポッドの存続期間中は、高速化イメージに一貫してアクセスできることを確認する必要があります。インデックスのみモードを使用する場合は、高速化イメージとベースイメージに一貫してアクセスできることを確認する必要があります。
イメージの高速化を有効にする
リポジトリのイメージの高速化を有効にできます。このようにして、リポジトリにプッシュされる各イメージは、自動的に高速化イメージに変換されます。イメージを高速化イメージに変換するのに必要な時間は、イメージのサイズによって異なります。変換はベースイメージには影響しません。
Container Registryコンソール にログインします。
上部のナビゲーションバーで、リージョンを選択します。
左側のナビゲーションウィンドウで、[インスタンス] をクリックします。
[インスタンス] ページで、管理するEnterprise Editionインスタンスをクリックします。
Container Registry Enterprise Editionインスタンスの管理ページの左側のナビゲーションウィンドウで、 を選択します。
[リポジトリ] ページで、イメージの高速化を有効にするリポジトリを見つけます。リポジトリの名前をクリックするか、[アクション] 列の [管理] をクリックします。
表示されたページの左上隅にある [編集] をクリックします。
[設定の変更] ダイアログボックスで、[イメージ アクセラレーションを有効にする] をオンにして、[確認] をクリックします。
説明イメージは、2 つのモードで高速イメージに変換できます。
[フルモード]: 高速イメージには、ベースイメージのすべてのコンテンツが含まれています。サイズはベースイメージの 1.3 倍です。高速イメージを使用すると、コンテナの起動時間を大幅に短縮できます。システムが高速イメージをビルドするとき、ベースイメージのタグに
_containerd_accelerated
サフィックスを追加し、高速イメージにタグを追加します。[インデックスのみモード]: 高速イメージには、各レイヤーのインデックスが含まれています。サイズはベースイメージの 3% のみです。このモードでの変換は高速で、高速化のパフォーマンスはフルモードの 70% のみです。システムが高速イメージをビルドするとき、ベースイメージのタグに
_accelerated
サフィックスを追加し、高速イメージにタグを追加します。
重要インデックス専用モードはまだリリースされていません。このモードを使用するには、Container Registry カスタマー サービスに連絡して、トライアルのホワイトリストに追加されるように申請してください。
高速化イメージを使用する
高速化イメージを使用するコンテナを起動するには、ACS にイメージをプルする権限を付与する必要があります。デフォルトでは、高速化イメージは、ポッドYAML テンプレートの imgePullSecrets
と照合されます。一致する secret
は、高速化イメージをプルするために使用されます。ACS では、次の方法でイメージをプルする権限を付与できます。
パスワードなしイメージプルプラグインを使用する
ACS クラスタにパスワードなしイメージプルプラグインをインストールすると、Container Registryインスタンスにアクセスするために使用される認証情報が、指定された条件を満たすワークロードに自動的に挿入されます。認証情報を手動で更新したり、ワークロードに関連付けたりする必要はありません。パスワードなしイメージプルプラグインを使用して高速化イメージでコンテナを起動するには、次の手順を実行します。
パスワードなしイメージプルプラグインをインストールして構成します。詳細については、「Secretsを使用せずにContainer Registryからイメージをプルする」をご参照ください。
高速化イメージを使用してワークロードを作成します。ワークロードがパスワードなしイメージプルプラグインに関連付けられたServiceAccountを使用し、ワークロードが同じ名前空間に属していることを確認します。ワークロードの例:
[フルモード]
説明[フルノード] は. をサポートしていません。高速化イメージを使用する場合は、高速化イメージのタグを指定する必要があります。Container Registry Enterprise Editionは、フルモードが有効になった後、Referrers API の仕様に基づいて、高速化イメージをベースイメージにリンクします。したがって、ACS で高速化イメージを使用するには、ベースイメージのタグを指定するだけで済みます。
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: containers: # ベースイメージの名前を指定します。 - image: test-registry-vpc.cn-hangzhou.cr.aliyuncs.com/test/nginx:latest name: test command: ["sleep", "3600"]
[インデックスのみモード]
説明Container Registryインスタンスで [インデックスのみモード] が有効になっている場合、イメージリポジトリが Referrers API の仕様に準拠している場合、高速化イメージはベースイメージに逆リンクされます。したがって、ACS で高速化イメージを使用する場合は、ベースイメージのタグを指定するだけで済みます。
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: containers: # ベースイメージの名前。 - image: test-registry-vpc.cn-hangzhou.cr.aliyuncs.com/test/nginx:latest name: test command: ["sleep", "3600"]
Secretを使用する
イメージのプルに使用されるSecretを手動で管理できます。これを行うには、kubernetes.io/dockerconfigjson
Secretを作成し、イメージリポジトリにアクセスするために使用される認証情報を構成します。Secretを作成して高速化イメージを使用するには、次の手順を実行します。
acr-credential-
プレフィックスまたはimages.alibabacloud.com/accelerated: true
タグ値を含むSecretを作成します。例:プレフィックスを含むSecretを作成する
kubectl create secret docker-registry acr-credential-test --docker-server=RegistryVpcDomain --docker-username=UserName --docker-password=Password
タグ値を含むSecretを作成する
kubectl create secret docker-registry <SecretName> --docker-server=<RegistryVpcDomain> --docker-username=<UserName> --docker-password=<Password>
kubectl label secrets <SecretName> images.alibabacloud.com/accelerated="true"
警告イメージのプルに使用されるSecretを構成する際には、最小権限の原則に従い、必要な権限のみが付与されていることを確認してください。詳細については、「カスタムポリシーをRAM ユーザーにアタッチする」をご参照ください。
イメージ名とSecretを使用してワークロードを作成します。例:
[フルモード]
説明[フルモード] は Referrers API をサポートしていません。高速化イメージを使用する場合は、高速化イメージのタグを指定する必要があります。
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: imagePullSecrets: # Secretの名前。 - name: acr-credential-test containers: # 高速化イメージの名前。 - image: test-registry-vpc.cn-hangzhou.cr.aliyuncs.com/test/nginx:latest_containerd_accelerated name: test command: ["sleep", "3600"]
[インデックスのみモード]
説明Container Registryインスタンスで [インデックスのみモード] が有効になっている場合、イメージリポジトリが Referrers API の仕様に準拠している場合、高速化イメージはベースイメージに逆リンクされます。したがって、ACS で高速化イメージを使用する場合は、ベースイメージのタグを指定するだけで済みます。
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: imagePullSecrets: # Secretの名前。 - name: acr-credential-test containers: # ベースイメージの名前。 - image: test-registry-vpc.cn-hangzhou.cr.aliyuncs.com/test/nginx:latest name: test command: ["sleep", "3600"]