Azure Container Storage は、コンテナー用にネイティブに構築されたクラウドベースのボリューム管理、デプロイ、オーケストレーション サービスです。 Kubernetes と統合されているため、永続ボリュームを動的かつ自動的にプロビジョニングして、Kubernetes クラスターで実行されているステートフル アプリケーションのデータを格納できます。
Azure Container Storage の使用を開始するには、 Azure Kubernetes Service で使用する Azure Container Storage のインストールに関するページを参照してください。
重要
この記事では、現在、ローカル NVMe ディスクのみをバッキング ストレージとしてサポートしている Azure Container Storage (バージョン 2.x.x) で使用できる機能について説明します。 以前のバージョンの詳細については、 Azure Container Storage (バージョン 1.x.x) のドキュメントを参照してください。
Azure Container Storage が役立つ理由
Azure Container Storage を使用すると、コンテナー ワークロードは、以前は仮想マシンでのみ使用できた高パフォーマンス ストレージにアクセスできます。 高速ローカル NVMe ディスクがサポートされています。これは、PostgreSQL などの待機時間に依存するワークロードや、Ray や Kubeflow などのコンピューティング集中型の AI および ML フレームワークに最適です。
ストレージ ボリュームは、標準の Kubernetes ツールを使用して作成および管理できます。 別のポータルを切り替えたり、独自に CSI ドライバーを設定したりする必要はありません。 これにより、ストレージ タスクが簡単になり、チームはアプリの実行に集中できます。
Azure Container Storage は、Azure Kubernetes Service およびセルフマネージド Kubernetes クラスターと連携します。 オープン ソース コンポーネントを使用するため、Azure やその他のクラウド間のデプロイをサポートし、ハイブリッドおよびマルチクラウドのセットアップに柔軟性を提供します。
主な利点
ステートフル ポッドのシームレスなスケーリング: Azure Container Storage では、NVMe-oF や iSCSI などの高パフォーマンスのネットワーク ブロック ストレージ プロトコルを使用して永続ボリュームをマウントすることで、迅速なスケーリングが可能になります。 この方法により、接続操作とデタッチ操作を高速に行うことができます。これにより、アプリケーションの中断を危険にさらすことなく、リソースを動的にスケールアップまたはスケールダウンできます。 ポッドの初期化またはフェールオーバー中に、クラスター間で永続ボリュームをすばやく再割り当てできるため、アプリケーションの回復性が向上し、Kubernetes で大規模でステートフルなワークロードがサポートされます。
ステートフル ワークロードのパフォーマンスの最適化: Azure Container Storage は、TCP 経由の NVMe-oF を使用して、高い読み取りスループットとほぼネイティブなディスク書き込み速度を実現します。 このアーキテクチャにより、階層 1 の I/O 集中型、汎用、スループットに依存する、開発/テストのシナリオなど、幅広いコンテナー化されたワークロードに対してコスト効率の高いパフォーマンスを実現できます。 また、永続ボリュームのアタッチ操作とデタッチ操作を高速化し、ポッドのフェールオーバー時間を短縮し、アプリケーションの回復性を向上させます。
Kubernetes ネイティブ ボリューム オーケストレーション: ストレージ クラスと永続ボリュームをシームレスに作成し、ボリュームのライフサイクル全体 (プロビジョニング、拡張、削除など) を管理し、使い慣れた
kubectlコマンドを使用してスナップショットのキャプチャなどの操作を実行します。 この統合アプローチにより、さまざまなツールまたはインターフェイスを切り替える必要がなくなり、Kubernetes 環境内でのストレージ管理が合理化されます。オープン ソースとコミュニティ主導: Azure Container Storage は、オープンソース プロジェクトとして開発されています。 これは、チュートリアルの説明に従って AKS 拡張機能を使用するか、local-csi-driver リポジトリを使用して Helm 経由でインストールできます。 このオープン なアプローチにより、ユーザーは既存の Kubernetes ワークフローとパターンに貢献し、カスタマイズし、統合できます。
サポートされているストレージの種類
Azure Container Storage には、Linux ベースの Kubernetes クラスター上の永続ボリューム用の Kubernetes ネイティブ オーケストレーションと管理レイヤーが用意されています。 基になるデータ ストアとして既存の Azure Storage オファリングが使用されます。 現在、Azure Container Storage v2 では、ストレージをバッキングするためのローカル NVMe ディスクのみがサポートされています。
| ストレージの種類 | 説明 | ワークロード | プラン | プロビジョニング モデル |
|---|---|---|---|---|
| ローカル NVMe ディスク | AKS ノード上のローカル NVMe ディスクを利用する | 超低待機時間を必要とし、データの持続性を許容できない、またはレプリケーションが組み込まれているアプリケーション (PostgreSQL など) に最適です。 | ストレージ最適化 VM サイズや GPU 高速 VM サイズ など、一部の Azure VM サイズで使用できます。 | Kubernetes クラスター内にデプロイされます。 ボリュームのデプロイのために、クラスター ノード上のローカル NVMe ディスクを自動的に検出して取得します。 |
さまざまなストレージの種類に対する機能のサポート
次の表に、Azure Container Storage の主な機能を示し、それらがローカル NVMe ディスクでサポートされているかどうかを示します。
| 機能 | ローカル NVMe |
|---|---|
| エフェメラル ボリューム | サポートされています |
| 永続ボリューム | サポート1 |
| PV 拡張/サイズ変更 | サポートされています |
| スナップショット | サポートされていません |
| レプリケーション | サポートされていません |
1 既定では、Azure Container Storage はローカル NVMe ディスクに汎用エフェメラル ボリュームを使用します。つまり、ポッドの削除後もデータは保持されません。 ポッドのライフサイクルにリンクされていない永続ボリュームを有効にするには、永続ボリューム要求に適切な注釈を追加します。 詳細については、「 ローカル NVMe ディスクを使用して永続ボリュームを作成する」を参照してください。
リージョン別の提供状況
Azure Container Storage は、次の Azure リージョンのサブセットでのみ使用できます。
- (アフリカ) 南アフリカ北部
- (アジア太平洋) オーストラリア東部
- (アジア太平洋) 東アジア
- (アジア太平洋) 東日本
- (アジア太平洋) 韓国中部
- (アジア太平洋) 東南アジア
- (アジア太平洋) インド中部
- (ヨーロッパ) フランス中部
- (ヨーロッパ) ドイツ中西部
- (ヨーロッパ) 北ヨーロッパ
- (ヨーロッパ) 西ヨーロッパ
- (ヨーロッパ) 英国南部
- (ヨーロッパ) スウェーデン中部
- (ヨーロッパ) スイス北部
- (中東) アラブ首長国連邦北部
- (北米) 米国東部
- (北米)米国東部 2
- (北米) 米国西部
- (北米)米国西部 2
- (北米) 米国西部 3
- (北米) 米国中部
- (北米) 米国中北部
- (北米) 米国中南部
- (北米) 米国中西部
- (北米) カナダ中部
- (北米) カナダ東部
- (南アメリカ) ブラジル南部
メジャー バージョンの選択に関する考慮事項
Azure Container Storage には、v1 と v2 の 2 つのメジャー バージョンが用意されています。 基になるストレージ オプションに基づいて適切なバージョンを選択します。
- ローカル NVMe ディスク: Azure Container Storage v2 を選択します。
- Azure ディスク: Azure Container Storage v1 を選択します。 Azure Container Storage v2 では、Azure Disks はまだサポートされていません。
- Azure Elastic SAN: Azure Container Storage v1 を選択します。 Azure Container Storage v2 には、Azure Elastic SAN のサポートがまだありません。
用語集
Azure Container Storage と Kubernetes の概念をより適切にナビゲートするには、次の重要な用語を理解してください。
コンテナー詰め
オペレーティング システムの依存関係と必須の依存関係のみを使用してアプリケーション コードをパッケージ化し、1 つの実行可能ファイルを作成します。
Kubernetes
Kubernetes は、コンテナー化されたアプリケーションのデプロイ、スケーリング、管理を自動化するためのオープンソース システムです。
Azure Kubernetes Service (AKS)
Azure Kubernetes Service はホストされた Kubernetes サービスであり、運用上のオーバーヘッドを Azure にオフロードすることによって、Azure でのマネージド Kubernetes クラスターのデプロイを簡素化します。 Azure は、稼働状況の監視やメンテナンスなどの重要なタスクを処理します。
クラスター
Kubernetes クラスターは、コンテナー化されたアプリケーションを実行する、コンピューティング ノード (VM) のセットです。 各ノードはコントロール プレーンによって管理され、ポッドの実行に必要なサービスが含まれています。
ポッド
ポッドは、共有ストレージとネットワーク リソースを持ち、コンテナーの実行方法を示す仕様を備えた、1 つ以上のコンテナーのグループです。 ポッドは、Kubernetes クラスター内のデプロイ可能な最小ユニットです。
ストレージ クラス
Kubernetes ストレージ クラスは、永続ボリュームを使用して保存の単位を動的に作成する方法を定義します。 詳細については、Kubernetes ストレージ クラスに関するページを参照してください。
量
Kubernetes ボリュームは、特定のポッド内のコンテナーからアクセスできるデータを含むディレクトリです。 ボリュームは永続的または一時的にすることができます。 ボリュームはストレージ プール内でシン プロビジョニングされ、ストレージ プールのパフォーマンス特性 (IOPS、帯域幅、容量) を共有します。
永続ボリューム
永続ボリュームは VM 内のディスクのようなものです。 任意のファイル システムをマウントするために使用できる raw ブロック デバイスを表します。 アプリケーション開発者は、アプリケーションまたはポッド定義と共に永続ボリュームを作成し、ボリュームはステートフル アプリケーションのライフサイクルに関連付けられていることがよくあります。 詳細については、永続ボリュームに関するページをご覧ください。
永続ボリューム要求 (PVC)
永続ボリューム要求を使用して、ストレージ クラスに基づいてストレージを自動的にプロビジョニングします。