この記事では、Azure Container Registry (ACR) を使用したAzure Kubernetes Service (AKS)でのアーティファクト ストリーミングの概要について説明します。 Artifact Streaming は ACR から AKS にコンテナー イメージをストリーミングするため、最初のポッドの起動に必要なレイヤーのみをプルします。 この機能により、ワークロードのデプロイにかかる時間が短縮されます。
アーティファクト ストリーミングのしくみ
標準コンテナーのスタートアップでは、Kubernetes はワークロードが開始される前にすべてのイメージ レイヤーをダウンロードします。 このプロセスは、大規模なイメージの場合や、複数のポッドを起動する場合に時間がかかる場合があります。
AKS でのアーティファクト ストリーミングでは、最初のポッドの起動に必要なレイヤーのみを取得することで、この動作が変更されます。 ランタイムは、必要に応じて後で残りのデータを取得します。 この機能は、コンテナー イメージ レイヤーを仮想ブロック デバイスに変換する OverlayBD を使用します。 ランタイムは、完全なイメージをダウンロードする代わりに、ブロック レベルでデータにアクセスできます。 この方法を使用すると、起動時と実行時にアクセスされるブロックのみを取得できます。 アプリケーションがイメージの一部のみを使用する場合、その部分のみがプルされます。
Note
AKS でのアーティファクト ストリーミング では、タグによるイメージ プルのみがサポートされます。
Artifact Streaming は、タグ指定のイメージ プルをそのイメージのストリーミング版に解決することで動作します。 イメージ プルにダイジェストを使用する場合は、アーティファクト ストリーミングを使用できません。
利点とユース ケース
AKS のアーティファクト ストリーミングを使用すると、次のことができます。
- 複数のリージョンにコンテナー化されたアプリケーションをデプロイする: 1 つのAzure コンテナー レジストリから別のリージョンの AKS クラスターにコンテナー イメージをストリーミングします。 この方法により、イメージのレプリケートに必要な時間とリソースが削減されます。
- ポッドの準備時間を短縮する: 完全なイメージがダウンロードされる前にポッドを起動します。これにより、ポッドの準備に要する時間を短縮できます (特に大きなイメージの場合)。
- スケーリング効率の向上: 複数のポッドを作成またはスケーリングするときのスタートアップの遅延を減らすことで、大規模なデプロイをサポートします。
- 大規模なイメージの起動を最適化する: コンテナー化されたステートフル ワークロード (Java や C# アプリケーションなど) や、ポッドの起動時にすぐに必要ではない依存関係がイメージに組み込まれているワークロードなど、起動時にすべてのイメージ レイヤーを必要としないワークロードの初期化時間を短縮します。
Considerations
AKS でアーティファクト ストリーミングを使用する場合は、次の考慮事項に注意してください。
- 起動時にファイルを読み取る必要がある読み取り負荷の高いイメージは、アーティファクト ストリーミングのメリットを得られません。 大きなファイル (>30 GB) にアクセスする必要があるポッドがある場合は、レイヤーとしてビルドするのではなく、ボリュームとしてマウントします。 ポッドでそのファイルを起動する必要がある場合は、ノードが混雑します。
- 新規または既存のコンテナー レジストリ内の特定のリポジトリまたはタグに対してアーティファクト ストリーミングを開始できます。
- 成果物ストリーミングを開始することで、元の成果物とストリーミング成果物の両方を ACR に格納できます。
- リポジトリまたは成果物の成果物ストリーミングをオフにした後でも、元の成果物とストリーミング成果物にアクセスできます。
- アーティファクト ストリーミングと論理的な削除を有効にし、リポジトリまたは成果物を削除すると、元のバージョンと成果物ストリーミング バージョンの両方が削除されます。 ただし、Soft Delete ポータルで利用できるのは元のバージョンのみです。
関連するコンテンツ
AKS でのアーティファクト ストリーミングの使用を開始するには、「Azure Container Registry (ACR) を使用してAzure Kubernetes Service (AKS)でアーティファクト ストリーミングを有効にする」を参照してください。