Azure Container Registry (ACR) を使用してAzure Kubernetes Service (AKS)のアーティファクト ストリーミングを使用してデプロイする時間を短縮する

コンテナー イメージが大きいと、イメージのプル時間が長くなり、ワークロードのデプロイが遅れる可能性があります。 アーティファクト ストリーミングを使用すると、Azure Container Registry (ACR) からAzure Kubernetes Service (AKS)にコンテナー イメージをストリーミングできます。 AKS では、最初のポッドの起動に必要なレイヤーのみがプルされるため、ワークロードのデプロイにかかる時間が短縮されます。

この記事では、AKS ノード プールでアーティファクト ストリーミング機能を有効または無効にして、ACR から成果物をストリーミングする方法について説明します。

前提条件

制限事項

  • Linux AMD64 アーキテクチャのイメージのみがサポートされています。
  • Windows ベースのコンテナー イメージと ARM64 イメージはサポートされていません。
  • マルチアーキテクチャ イメージでは、AMD64 アーキテクチャのみがサポートされています。
  • AKS の Ubuntu ベースのノード プールでは、Ubuntu バージョン 20.04 以降を使用する必要があります。
  • Premium SKU ACR レジストリのみがサポートされています。
  • CMK(顧客管理キー)レジストリはサポートされていません。
  • regcredなどの Kubernetes imagePullSecretsはサポートされていません。 非 Entra のスコープ マップ トークン資格情報または ACR 管理者ユーザー資格情報を使用して ACR からイメージをプルする場合、ノード プールとイメージでストリーミングが有効になっていても、既定では非 Artifact Streaming プルになります。
  • アーティファクト ストリーミングでは、タグによるイメージ プルのみがサポートされます。 Artifact Streaming は、タグ指定のイメージのプルを、そのイメージのストリーミング版に解決することで動作します。 画像プルがダイジェストによって行われる場合、アーティファクト ストリーミングを使用することはできません。

ACR で成果物ストリーミングを有効にする

  1. az group create コマンドを使用して、ACR インスタンスを保持するための Azure リソース グループを作成します。

    az group create --name myStreamingTest --location westus
    
  2. az acr create フラグを指定して --sku Premium コマンドを使用して、新しい Premium SKU ACR を作成します。

    az acr create --resource-group myStreamingTest --name mystreamingtest --sku Premium
    
  3. az configure コマンドを使用して、サブスクリプションの既定の ACR インスタンスを構成します。

    az configure --defaults acr="mystreamingtest"
    
  4. az acr import コマンドを使用して、イメージをレジストリにプッシュまたはインポートします。

    az acr import --source docker.io/jupyter/all-spark-notebook --repository jupyter/all-spark-notebook
    
  5. az acr artifact-streaming create コマンドを使用して、イメージからストリーミング成果物を作成します。

    az acr artifact-streaming create --image jupyter/all-spark-notebook:latest
    
  6. az acr manifest list-referrers コマンドを使用して、生成された成果物ストリーミングを確認します。

    az acr manifest list-referrers --name jupyter/all-spark-notebook:latest
    

AKS で成果物ストリーミングを有効にする

ACR 統合を使用して、AKS クラスター内の新規または既存のノード プールでアーティファクト ストリーミングを有効にすることができます。

メモ

Premium レベルの ACR が AKS クラスターと統合されていない場合、AKS でアーティファクト ストリーミングを使用することはできません。

新しいノード プールで成果物ストリーミングを有効にする

az aks nodepool add フラグを指定して --enable-artifact-streaming コマンドを使用して、アーティファクト ストリーミングが有効になっている新しい AKS ノード プールを作成します。

az aks nodepool add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name myNodePool \
    --enable-artifact-streaming

既存のノード プールでアーティファクト ストリーミングを有効にする

az aks nodepool update フラグを指定して --enable-artifact-streaming コマンドを使用して、既存の AKS ノード プールでアーティファクト ストリーミングを有効にします。

az aks nodepool update \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name myNodePool \
    --enable-artifact-streaming

既存のノード プールでアーティファクト ストリーミングを無効にする

az aks nodepool update フラグを指定して --disable-artifact-streaming コマンドを使用して、既存の AKS ノード プールでアーティファクト ストリーミングを無効にします。

az aks nodepool update \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name myNodePool \
    --disable-artifact-streaming

アーティファクト ストリーミング有効化の状態を確認する

az aks nodepool show フラグが --query に設定された artifactStreamingProfile コマンドを使用して、AKS ノード プールでアーティファクト ストリーミングが有効になっているかどうかを確認します。

az aks nodepool show \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name myNodePool \
    --query artifactStreamingProfile

出力で、 Enabled フィールドを確認します。 true はアーティファクト ストリーミングが有効であることを意味し、 false はアーティファクト ストリーミングが無効になっていることを意味します。

この記事では、AKS ノード プールでアーティファクト ストリーミングを有効または無効にして、ACR から成果物をストリーミングし、デプロイ時間を短縮する方法について説明します。 AKS でのコンテナー イメージの操作の詳細については、「AKS でのコンテナー イメージの管理とセキュリティに関するベスト プラクティス」を参照してください。