Azure Kubernetes Service (AKS) の成果物ストリーミングを使用してイメージのプル時間を短縮する (プレビュー)
多くの場合、ハイ パフォーマンスのコンピューティング ワークロードには大きなイメージが含まれます。これにより、イメージのプル時間が長くなり、ワークロードのデプロイが遅くなる可能性があります。 AKS で成果物ストリーミングを使用すると、Azure Container Registry (ACR) から AKS にコンテナー イメージをストリーミングできます。 AKS では、最初のポッドを起動するために必要なレイヤーのみがプルされるため、イメージのプルとワークロードのデプロイにかかる時間が短縮されます。
成果物ストリーミングでは、イメージのサイズに応じてポッドの準備時間を 15% 以上短縮でき、<30 GB のイメージに最適です。 テストに基づいて、<10 GB のイメージのポッドの起動時間が分単位から秒単位に短縮されました。 大きなファイル (>30 GB) にアクセスする必要があるポッドがある場合、レイヤーとして構築するのではなく、ボリュームとしてマウントする必要があります。 これは、ポッドでそのファイルを起動する必要がある場合、ノードが混雑するためです。 成果物ストリーミングは、起動時に成果物ストリーミングが必要な場合は、ファイルシステムからの大量の画像の読み取りには適していません。 成果物ストリーミングを使用する場合、ポッドの起動が同時に行われるのに対し、成果物ストリーミングを使用しない場合、ポッドは並列して開始されます。
この記事では、AKS ノード プールで成果物ストリーミング機能を有効にして、ACR から成果物をストリーミングする方法について説明します。
重要
AKS のプレビュー機能は、セルフサービスのオプトイン単位で利用できます。 プレビューは、"現状有姿" および "利用可能な限度" で提供され、サービス レベル アグリーメントおよび限定保証から除外されるものとします。 AKS プレビューは、ベストエフォート ベースでカスタマー サポートによって部分的にカバーされます。 そのため、これらの機能は、運用環境での使用を意図していません。 詳細については、次のサポート記事を参照してください。
前提条件
- ACR が統合された既存の AKS クラスターが必要です。 ない場合は、「AKS から ACR の認証を受ける」を使用して作成できます。
- ACR で成果物ストリーミングを有効にする
- この機能には、Kubernetes バージョン 1.25 以降が必要です。 AKS クラスターのバージョンを確認するには、「利用可能な AKS クラスターのアップグレードを確認する」を参照してください。
Note
成果物ストリーミングは、Ubuntu 22.04、Ubuntu 20.04、および Azure Linux ノード プールでのみサポートされます。 Windows ノード プールはサポートされていません。
aks-preview
CLI 拡張機能をインストールする
az extension add
コマンドを使用してaks-preview
CLI 拡張機能をインストールします。az extension add --name aks-preview
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 での成果物ストリーミング オプション」を参照してください。
az group create
コマンドを使用して、ACR インスタンスを保持するための Azure リソース グループを作成します。az group create --name myStreamingTest --location westus
--sku Premium
フラグを指定してaz acr create
コマンドを使用して、新しい Premium SKU Azure Container Registry を作成します。az acr create --resource-group myStreamingTest --name mystreamingtest --sku Premium
az configure
コマンドを使用して、サブスクリプションの既定の ACR インスタンスを構成します。az configure --defaults acr="mystreamingtest"
az acr import
コマンドを使用して、イメージをレジストリにプッシュまたはインポートします。az acr import --source docker.io/jupyter/all-spark-notebook:latest --repository jupyter/all-spark-notebook:latest
az acr artifact-streaming create
コマンドを使用して、イメージからストリーミング成果物を作成します。az acr artifact-streaming create --image jupyter/all-spark-notebook:latest
az acr manifest list-referrers
コマンドを使用して、生成された成果物ストリーミングを確認します。az acr manifest list-referrers --name jupyter/all-spark-notebook:latest
AKS で成果物ストリーミングを有効にする
新しいノード プールで成果物ストリーミングを有効にする
--enable-artifact-streaming
でaz 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 でのコンテナー イメージの管理とセキュリティに関するベスト プラクティス」を参照してください。
Azure Kubernetes Service