Azure Kubernetes Service (AKS) の成果物ストリーミングを使用してイメージのプル時間を短縮する (プレビュー)

多くの場合、ハイ パフォーマンスのコンピューティング ワークロードには大きなイメージが含まれます。これにより、イメージのプル時間が長くなり、ワークロードのデプロイが遅くなる可能性があります。 AKS で成果物ストリーミングを使用すると、Azure Container Registry (ACR) から AKS にコンテナー イメージをストリーミングできます。 AKS では、最初のポッドを起動するために必要なレイヤーのみがプルされるため、イメージのプルとワークロードのデプロイにかかる時間が短縮されます。

成果物ストリーミングでは、イメージのサイズに応じてポッドの準備時間を 15% 以上短縮でき、<30 GB のイメージに最適です。 テストに基づいて、<10 GB のイメージのポッドの起動時間が分単位から秒単位に短縮されました。 大きなファイル (>30 GB) にアクセスする必要があるポッドがある場合、レイヤーとして構築するのではなく、ボリュームとしてマウントする必要があります。 これは、ポッドでそのファイルを起動する必要がある場合、ノードが混雑するためです。 成果物ストリーミングは、起動時に成果物ストリーミングが必要な場合は、ファイルシステムからの大量の画像の読み取りには適していません。 成果物ストリーミングを使用する場合、ポッドの起動が同時に行われるのに対し、成果物ストリーミングを使用しない場合、ポッドは並列して開始されます。

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

重要

AKS のプレビュー機能は、セルフサービスのオプトイン単位で利用できます。 プレビューは、"現状有姿のまま" および "利用可能な限度" で提供され、サービス レベル アグリーメントおよび限定保証から除外されるものとします。 AKS プレビューは、ベストエフォート ベースでカスタマー サポートによって部分的にカバーされます。 そのため、これらの機能は、運用環境での使用を意図していません。 詳細については、次のサポート記事を参照してください。

前提条件

Note

成果物ストリーミングは、Ubuntu 22.04、Ubuntu 20.04、および Azure Linux ノード プールでのみサポートされます。 Windows ノード プールはサポートされていません。

aks-preview CLI 拡張機能をインストールする

  1. az extension add コマンドを使用して aks-preview CLI 拡張機能をインストールします。

    az extension add --name aks-preview
    
  2. az extension update コマンドを使用して拡張機能を更新して、最新バージョンが確実にインストールされた状態にします。

    az extension update --name aks-preview
    

サブスクリプションに ArtifactStreamingPreview 機能フラグを登録します。

  • az feature register コマンドを使用してサブスクリプションに ArtifactStreamingPreview 機能フラグを登録します。

    az feature register --namespace Microsoft.ContainerService --name ArtifactStreamingPreview
    

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

ACR での有効化は、AKS での成果物ストリーミングの前提条件です。 詳細については、「AKS での成果物ストリーミング オプション」を参照してください。

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

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

    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:latest -t jupyter/all-spark-notebook:latest
    
  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 -n jupyter/all-spark-notebook:latest
    

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

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

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

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

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

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

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

成果物ストリーミングが有効になっているかどうかを確認する

Premium ACR で成果物ストリーミングを有効にし、成果物ストリーミングが有効な AKS ノード プールにこれを接続したので、成果物ストリーミングが有効な ACR からのイメージのプルを使用してこのクラスター上で新しいポッドをデプロイすると、イメージのプル時間が短縮されます。

  • az aks nodepool show コマンドを使用して、ノード プールで成果物ストリーミングが有効になっているかどうかを確認します。

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

    出力で Enabled フィールドが true に設定されているかどうかを確認します。

次のステップ

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