Azure Container Storage は、コンテナー用に構築されたクラウドベースのボリューム管理、デプロイ、オーケストレーション サービスです。 Kubernetes と統合されるため、Kubernetes クラスター上のステートフル アプリケーション用に永続ボリュームを動的にプロビジョニングできます。
開始するには、 Azure Kubernetes Service で使用する Azure Container Storage のインストールに関するページを参照してください。
重要
この記事では、ローカル NVMe ディスクと Elastic SAN をバッキング ストレージの種類としてサポートする Azure Container Storage (バージョン 2.x.x) で使用できる機能について説明します。 以前のバージョンについては、 Azure Container Storage (バージョン 1.x.x) のドキュメントを参照してください。
Azure コンテナー ストレージが役立つ理由
Azure Container Storage を使用すると、コンテナー ワークロードは、以前は仮想マシンでのみ使用できた高パフォーマンス ストレージにアクセスできます。
ローカル NVMe ディスクは、Azure で最高のパフォーマンス ストレージを提供します。 これらは、PostgreSQL などの待機時間に依存するワークロードや、Ray や Kubeflow などのコンピューティング集中型の AI および ML フレームワークに最適です。
Azure Container Storage での Elastic SAN サポートを使用すると、アプリケーションに合わせてスケーリングする永続的なネットワーク接続ブロック ストレージを使用できます。 Elastic SAN ボリューム グループからボリュームをプロビジョニングすると、予測可能なスループットと、ローカル冗長ストレージ (LRS) やゾーン冗長ストレージ (ZRS) などの組み込みの冗長性オプションが得られます。 この機能により、Azure Container Storage は、データベース、分析エンジン、および一貫したパフォーマンスを必要とするワークロードに対して強力な選択肢となります。
ストレージ ボリュームは、標準の Kubernetes ツールを使用して作成および管理できます。 ポータルを切り替えたり、Container Storage Interface (CSI) ドライバーを自分でインストールしたりする必要はありません。
Azure Container Storage は、Azure Kubernetes Service (AKS) およびセルフマネージド Kubernetes クラスターと連携します。 オープンソース コンポーネントを使用するため、Azure やその他のクラウド間のデプロイをサポートします。
主なベネフィット
- ステートフル ポッドのシームレスなスケーリング: Azure Container Storage では、NVMe over Fabrics (NVMe-oF) または iSCSI (Internet Small Computer System Interface) を使用して永続ボリュームをマウントします。 これにより、アタッチ操作とデタッチ操作が高速化され、ポッドの高速復旧がサポートされます。 Elastic SAN と共に使用すると、Azure Container Storage はクラスターごとに何千もの永続ボリュームをプロビジョニングしてアタッチできます。 これにより、Azure Resource Manager ディスクの添付ファイルの制限 (VM あたり 64 個のディスクなど) などのボトルネックが回避されます。
- ステートフル ワークロードのパフォーマンスの最適化: Azure Container Storage は、TCP 経由の NVMe-oF を使用して、高い読み取りスループットとほぼネイティブなディスク書き込み速度を実現します。 このアプローチにより、レベル 1 の I/O 集中型、汎用、スループットに依存する、開発/テストのワークロードに対してコスト効率の高いパフォーマンスが実現します。
- ストレージ統合によるコスト効率: Azure Container Storage は、1 つの SAN で多数の小さなボリュームを統合することで、ストレージ コストと管理オーバーヘッドを削減します。 また、エラスティック SAN 階層型プロビジョニングは、オーバープロビジョニングを削減し、総保有コストを削減するのにも役立ちます。
-
Kubernetes ネイティブ ボリューム オーケストレーション: StorageClass オブジェクトと永続ボリュームを作成し、
kubectlコマンドを使用して、プロビジョニング、拡張、削除、スナップショットなどのボリュームの完全なライフサイクルを管理します。 - オープン ソースとコミュニティ主導: Azure Container Storage は、オープンソース プロジェクトとして開発されています。 このインストールは、 チュートリアルの説明に従って AKS 拡張機能を使用するか、 local-csi-driver リポジトリを使用して Helm を使用してインストールできます。
サポートされているストレージの種類
Azure Container Storage には、Linux ベースの Kubernetes クラスター上の永続ボリューム用の Kubernetes ネイティブ オーケストレーションと管理レイヤーが用意されています。 基になるデータ ストアとして Azure Storage オファリングが使用されます。
| ストレージの種類 | Description | Workloads | Offerings | プロビジョニング モデル |
|---|---|---|---|---|
| ローカル NVMe ディスク | AKS ノード上のローカル NVMe ディスクを使用します。 | 超低待機時間を必要とし、データの持続性を許容できない、またはレプリケーションが組み込まれているアプリケーション (PostgreSQL など) に最適です。 | ストレージ最適化 VM や GPU アクセラレータ VM など、一部の Azure VM サイズで使用できます。 | Kubernetes クラスター内にデプロイされます。 ボリュームのデプロイのために、クラスター ノード上のローカル NVMe ディスクを自動的に検出して取得します。 |
| Elastic SAN | フル マネージド リソースとしてオンデマンドでプロビジョニングされます。 | 汎用データベース、ストリーミングおよびメッセージング サービス、CI/CD 環境、およびその他の階層 1 および階層 2 のワークロード。 | Azure Elastic SAN | 作成されたボリュームおよびボリューム スナップショットごとに、または静的 Elastic SAN ボリュームを使用してオンデマンドでプロビジョニングされます。 |
異なるストレージの種類に対する機能サポート
次の表に、Azure Container Storage の主な機能を示し、それらがローカル NVMe ディスクでサポートされているかどうかを示します。
| 特徴 | ローカル NVMe | Elastic SAN |
|---|---|---|
| エフェメラル ボリューム | Supported | サポートされていません |
| 永続ボリューム | サポート対象1 | Supported |
| PV 拡張/サイズ変更 | Supported | Supported |
| スナップショット | サポートされていません | Supported |
| レプリケーション | サポートされていません | サポート対象 (LRS および ZRS) |
| ZRS オプション | N/A | Supported |
| Encryption | N/A | Supported |
1 既定では、Azure Container Storage はローカル NVMe ディスクに汎用エフェメラル ボリュームを使用します。つまり、ポッドの削除後もデータは保持されません。 ポッドのライフサイクルにリンクされていない永続ボリュームを有効にするには、永続ボリューム要求 (PVC) に適切な注釈を追加します。 詳細については、「 ローカル NVMe ディスクを使用して永続ボリュームを作成する」を参照してください。
リージョン別の提供状況
Azure コンテナー ストレージは、次の Azure リージョンのサブセットでのみ使用できます。
- (アフリカ) 南アフリカ北部
- (アジア太平洋) オーストラリア東部
- (アジア太平洋) 東アジア
- (アジア太平洋) 東日本
- (アジア太平洋) 韓国中部
- (アジア太平洋) 東南アジア
- (アジア太平洋) インド中部
- (ヨーロッパ) フランス中部
- (ヨーロッパ) ドイツ中西部
- (ヨーロッパ) 北ヨーロッパ
- (ヨーロッパ) 西ヨーロッパ
- (ヨーロッパ) 英国南部
- (ヨーロッパ) スウェーデン中部
- (ヨーロッパ) スイス北部
- (中東) アラブ首長国連邦北部
- (北米) 米国東部
- (北米)米国東部 2
- (北米) 米国西部
- (北米)米国西部 2
- (北米) 米国西部 3
- (北米) 米国中部
- (北米) 米国中北部
- (北米) 米国中南部
- (北米) 米国中西部
- (北米) カナダ中部
- (北米) カナダ東部
- (南アメリカ) ブラジル南部
Elastic SAN は、選択した Azure リージョンでのみ使用できます。 完全で最新の一覧については、「Elastic SAN リージョンの可用性」を参照してください。
メジャー バージョンの選択に関する考慮事項
Azure Container Storage には、バージョン 1 とバージョン 2 の 2 つのメジャー バージョンが用意されています。 基になるストレージ オプションに基づいて適切なバージョンを選択します。
- ローカル NVMe ディスク: Azure Container Storage バージョン 2 を選択します。
- Azure ディスク: Azure Container Storage バージョン 1 を選択します。 Azure Container Storage バージョン 2 では、Azure ディスクはサポートされていません。
- Azure Elastic SAN: Azure Container Storage バージョン 2 を選択します。
用語集
Azure Container Storage と Kubernetes を使用する場合は、次の用語を使用します。
- コンテナー化: 1 つの実行可能ファイルを作成するために、オペレーティング システムと必要な依存関係を使用してアプリケーション コードをパッケージ化します。
- Kubernetes: コンテナー化されたアプリケーションのデプロイ、スケーリング、管理を自動化するためのオープンソース システム。
- Azure Kubernetes Service (AKS):正常性の監視やメンテナンスなどのクラスター管理タスクをオフロードする Azure のマネージド Kubernetes サービス。
- Container Storage Interface (CSI):Kubernetes などのコンテナー オーケストレーション システムにストレージ システムを公開するための標準。
- クラスター: コンテナー化されたアプリケーションを実行し、コントロール プレーンによって管理されるコンピューティング ノード (VM) のセット。
- ポッド: 共有ストレージとネットワーク リソースを持つ 1 つ以上のコンテナーのグループ。 ポッドは、Kubernetes クラスター内にデプロイ可能な最小ユニットです。
- StorageClass: 永続ボリュームに対して記憶域の単位を動的に作成する方法を定義する Kubernetes リソース。 Kubernetes ストレージ クラスを参照してください。
- ボリューム: 特定のポッド内のコンテナーからアクセスできるデータを含むディレクトリ。 ボリュームは永続的にすることも一時的にすることもできます。
- 永続ボリューム (PV): 任意のファイル システムでマウントできる未加工のブロック デバイス リソース。 詳細については、永続ボリュームに関するページをご覧ください。
- 永続ボリューム要求 (PVC):Kubernetes が永続ボリュームのプロビジョニングに使用するストレージの要求。
- Azure Elastic SAN: 予測可能なスループットとゾーン冗長性を備えた永続ボリューム グループを提供する、Azure で管理されるスケーラブルなストレージ エリア ネットワーク (SAN)。
- ボリューム グループ: 共有ポリシーを持つボリュームの論理プールを表す Elastic SAN 内のグループ化コンストラクト。