Azure Container Storage とは
Azure Container Storage は、コンテナー用にネイティブに構築されたクラウドベースのボリューム管理、デプロイ、オーケストレーション サービスです。 Kubernetes と統合されているため、永続ボリュームを動的かつ自動的にプロビジョニングして、Kubernetes クラスターで実行されているステートフル アプリケーションのデータを格納できます。
重要
Azure Container Storage は、すべての Azure リージョンで使用できるわけではありません。 リージョン別の提供状況を参照してください。 Azure Container Storage は、バージョン 1.1.0 以降で一般公開 (GA) されるようになりました。 この GA バージョンは運用環境のワークロードにお勧めします。 以前に Azure Container Storage プレビュー版をインストールしていて、自動アップグレードが有効になっていない場合は、必ず GA バージョンに更新してください。
Azure Container Storage の使用を開始するには、「 Azure Kubernetes Service で Azure Container Storage を使用する」を参照するか、ビデオをご覧ください。
このビデオでは、ステートフル アプリケーション用のエンド ツー エンドのストレージ管理およびオーケストレーション サービスである Azure Container Storage の概要について説明します。 Azure Kubernetes Service (AKS) のステートフル ワークロードのパフォーマンスを最適化して、コスト効率の高いコンテナーネイティブ エクスペリエンスを提供しながら、ストレージ サービス全体で効果的にスケーリングする方法について説明します。
サポートされているストレージの種類
Azure Container Storage は、既存の Azure Storage オファリングを実際のデータ ストレージに利用して、コンテナー向けに構築されたボリューム オーケストレーションおよび管理ソリューションを提供します。 サポートされているバッキング ストレージ オプションのいずれかを選択して、永続ボリューム用のストレージ プールを作成できます。
Azure Container Storage は、Linux ベースの Azure Kubernetes Service (AKS) クラスターへの ReadWriteOnce アクセス モードによる永続ボリュームのサポートを提供します。 サポートされているバッキング ストレージ オプションには、ブロック ストレージ オファリングである Azure ディスク、エフェメラル ディスク (ローカル NVMe または一時 SSD)、Azure Elastic SAN (プレビュー) のみが含まれます。 次の表は、サポートされているストレージの種類、推奨されるワークロード、プロビジョニング モデルをまとめたものです。
ストレージの種類 | 説明 | ワークロード | プラン | プロビジョニング モデル |
---|---|---|---|---|
Azure Elastic SAN (プレビュー) | オンデマンドのフル マネージド リソースをプロビジョニングする | 汎用データベース、ストリーミングおよびメッセージング サービス、CD/CI 環境、その他のティア 1/ティア 2 ワークロード。 | Azure Elastic SAN | 作成されたボリュームおよびボリューム スナップショットごとにオンデマンドでプロビジョニングされます。 複数のクラスターが 1 つの SAN に同時にアクセスできますが、永続ボリュームには一度に 1 つのコンシューマーのみがアタッチできます。 |
Azure ディスク | ストレージの SKU と構成のきめ細かな制御 | Azure ディスクは、MySQL、MongoDB、PostgreSQL などのティア 1 および汎用データベースに適しています。 | Premium SSD、Premium SSD v2、Standard SSD、Ultra Disk | ターゲット コンテナーのストレージ プール サイズと最大ボリューム サイズに従ってプロビジョニングされます。 |
エフェメラル ディスク | AKS ノード上のローカル ストレージ リソースを利用する (NVMe または一時 SSD) | エフェメラル ディスクは、(ミリ秒未満のわずかな待機時間であっても) 非常に待機時間の影響を受けやすいため、データ持続性の要件がないアプリケーションや、Cassandra などの組み込みデータ レプリケーション サポートを備えたアプリケーションに最適です。 | NVMe は、たとえば、Storage 最適化された VM SKU、または GPU 加速化 VM SKU など、一部の Azure VM SKU で使用できます | AKS クラスターをホストする VM の一部としてデプロイされます。 AKS は、AKS ノード上の使用可能なエフェメラル ストレージを検出し、ボリューム デプロイ用に取得します。 |
さまざまなストレージの種類に対する機能のサポート
機能のサポートは、選択したバッキング ストレージ オプションによって異なります。 次の表に、Azure Container Storage の主な機能と、それらをサポートするストレージ オプションを示します。
機能 | ローカル NVMe | ローカル SSD | Azure ディスク | Azure Elastic SAN (プレビュー) |
---|---|---|---|---|
ストレージ プールの拡張/サイズ変更 | サポートされています | サポート対象 | サポート対象 | サポートされていません |
レプリケーション | サポートされています | サポートされていません | ネイティブでサポートされています | プレビュー |
リソース消費 | サポートされています | サポート対象 | サポートされています | プレビュー |
SSE/CMK | サポート対象外 | サポートされていません | サポートされています | プレビュー |
ZRS の公開オプション | 該当なし | 該当なし | サポートされています | プレビュー |
永続ボリューム | サポート1 | サポート1 | サポートされています | プレビュー |
エフェメラル ボリューム | サポートされています | サポート対象 | サポートされています | プレビュー |
スナップショット | サポートされています | サポート対象 | サポート対象 | サポートされていません |
1 ローカル NVMe とローカル SSD の場合、Azure Container Storage は、データが永続的ではない汎用エフェメラル ボリュームを既定で使用します。 ただし、Azure Container Storage のインストールを更新すると、エフェメラル ディスク ストレージ プールから永続ボリュームを作成できます。
リージョン別の提供状況
Azure Container Storage は、次の Azure リージョンのサブセットでのみ使用できます。
- (アフリカ) 南アフリカ北部
- (アジア太平洋) オーストラリア東部
- (アジア太平洋) 東アジア
- (アジア太平洋) 東日本
- (アジア太平洋) 韓国中部
- (アジア太平洋) 東南アジア
- (アジア太平洋) インド中部
- (ヨーロッパ) フランス中部
- (ヨーロッパ) ドイツ中西部
- (ヨーロッパ) 北ヨーロッパ
- (ヨーロッパ) 西ヨーロッパ
- (ヨーロッパ) 英国南部
- (ヨーロッパ) スウェーデン中部
- (ヨーロッパ) スイス北部
- (中東) アラブ首長国連邦北部
- (北米) 米国東部
- (北米)米国東部 2
- (北米) 米国西部
- (北米)米国西部 2
- (北米) 米国西部 3
- (北米) 米国中部
- (北米) 米国中北部
- (北米) 米国中南部
- (北米) 米国中西部
- (北米) カナダ中部
- (北米) カナダ東部
- (南アメリカ) ブラジル南部
Azure Container Storage の新機能
最新の更新プログラムでは、ステートフル コンテナーの回復性とパフォーマンスが向上します。 ローカル NVMe ストレージ プールのマルチゾーン ストレージ プールとボリューム レプリケーションが提供され、単一ノード障害時の可用性が確保されるようになりました。 バックアップとディザスター リカバリーのすべてのストレージ オプションで、スナップショットのサポートを利用できます。 さらに、エフェメラル ディスクのポートフォリオは一時 SSD のサポートを含み、直接アタッチされたローカル ストレージを利用するユース ケース向けにコスト効率の高いソリューションを提供するようになりました。
- レプリケーションのサポートにより、ローカル NVMe ストレージ (L シリーズ エフェメラル ディスク) でホストされている永続ボリュームの回復性が強化されます。
- Azure Kubernetes Service (AKS) クラスターを再起動した後の永続ボリュームの復旧が改善されました。
- 新しいパフォーマンス レベル オプションを使って、ローカル NVMe ストレージのパフォーマンスをカスタマイズできます。
これらの機能の詳細については、Azure Container Storage チームにメールで (containerstoragepm@microsoft.com) お問い合わせください。
Azure Container Storage が役立つ理由
これまでは、コンテナー用のクラウド ストレージを提供するには、IaaS 中心のワークロード向けのストレージ サービスを使用してコンテナーで機能させるために、個別のコンテナー ストレージ インターフェイス (CSI) ドライバーを使用する必要がありました。 CSI ドライバーは特定のシナリオで役立ちますが、それらに依存すると、運用上のオーバーヘッドが発生し、アプリケーションの可用性、スケーラビリティ、パフォーマンス、使いやすさ、コストに関する問題のリスクが高まる可能性があります。
名前にもかかわらず、Azure Container Storage では CSI ドライバーは使用されません。 代わりに、Kubernetes のコンテナー ストレージ機能を提供するオープン ソース ソリューションである OpenEBS から派生しています。 Kubernetes 環境でマイクロサービスベースのストレージ コントローラーを介してマネージド ボリューム オーケストレーション ソリューションを提供することで、Azure Container Storage は真のコンテナー ネイティブ ストレージを実現します。
Azure Container Storage を使用すると、次のことができます。
VM からコンテナーへのイニシアティブを加速: Azure Container Storage は、以前は VM でしか使用できなかった Azure ブロック ストレージ オファリングの制限をなくし、コンテナーで使用できるようにします。 これには、Cassandra などのワークロードで待機時間を極小にするエフェメラル ディスクや、ネイティブ iSCSI ターゲットと共有プロビジョニング ターゲットを提供する Azure Elastic SAN (プレビュー) が含まれます。
Kubernetes によってボリューム管理を簡素化: Azure Container Storage は、Kubernetes コントロール プレーンを介したボリューム オーケストレーションを提供することで、Kubernetes 内でのボリュームのデプロイと管理を容易にし、異なるコントロール プレーン間を行き来する必要をなくします。
総保有コスト (TCO) を削減: ポッドまたはノードごとにサポートされる永続ボリュームのスケールを増やすことで、コスト効率を向上させます。 ストレージ リソースを動的に共有することで、プロビジョニングに必要なストレージ リソースを減らします。 ストレージ プール自体のスケールアップはサポートされていないことに注意してください。
主な利点
ステートフル ポッドの迅速なスケールアウト: Azure Container Storage は、ネットワーク ブロック ストレージ プロトコル (NVMe-oF または iSCSI) 経由で永続ボリュームをマウントし、永続ボリュームの高速なアタッチとデタッチを実現します。 小規模から始めて、初期化中または運用中にアプリケーションでリソースが不足したり動作が中断したりしないことを確認しながら、必要に応じてリソースをデプロイできます。 クラスター全体でポッドが再生成されるため、アプリケーションの回復性が向上し、永続ボリュームの迅速な移動が必要になります。 リモート ネットワーク プロトコルを利用して、Azure Container Storage はポッドのライフサイクルと密接に結び付き、回復性とスケールが高いステートフル アプリケーションを AKS 上でサポートします。
ステートフル ワークロードのパフォーマンス向上: Azure コンテナー ストレージは、TCP 経由の NVMe-oF を使って、優れた読み取りパフォーマンスを実現し、ディスクに近い書き込みパフォーマンスを提供します。 これにより、ティア 1 I/O 集中型、汎用、スループット重視、開発/テストなどのさまざまなコンテナー ワークロードのパフォーマンス要件を、優れたコスト効率で満たすことができます。 永続ボリュームのアタッチ/デタッチ時間を短縮し、ポッドのフェールオーバー時間を最小限に抑えます。
Kubernetes ネイティブのボリューム オーケストレーション:
kubectl
コマンドを使用して、さまざまなコントロール プレーン操作用のツールセットを切り替えることなく、ストレージ プールと永続ボリュームを作成し、スナップショットをキャプチャし、ボリュームのライフサイクル全体を管理します。
用語集
Azure Container Storage と Kubernetes に関連するいくつかの重要な用語を理解しておくと役立ちます。
コンテナー詰め
オペレーティング システムの依存関係と必須の依存関係のみを使用してアプリケーション コードをパッケージ化し、1 つの実行可能ファイルを作成します。
Kubernetes
Kubernetes は、コンテナー化されたアプリケーションのデプロイ、スケーリング、管理を自動化するためのオープンソース システムです。
クラスター
Kubernetes クラスターは、コンテナー化されたアプリケーションを実行する、コンピューティング ノード (VM) のセットです。 各ノードはコントロール プレーンによって管理され、ポッドの実行に必要なサービスが含まれています。
ポッド
ポッドは、共有ストレージとネットワーク リソースを持ち、コンテナーの実行方法を示す仕様を備えた、1 つ以上のコンテナーのグループです。 ポッドは、Kubernetes クラスター内のデプロイ可能な最小ユニットです。
Azure Kubernetes Service (AKS)
Azure Kubernetes Service はホストされた Kubernetes サービスであり、運用上のオーバーヘッドを Azure にオフロードすることによって、Azure でのマネージド Kubernetes クラスターのデプロイを簡素化します。 Azure は、稼働状況の監視やメンテナンスなどの重要なタスクを処理します。
記憶域プール
Azure Container Storage スタックは、クラスターが所有するリソースとプラットフォームの抽象化にわたってオブジェクト モデルを統合しようとします。 統一された表現を実現するために、使用可能なストレージ容量がストレージ プール オブジェクトに集約されます。 ストレージ プール内のストレージ容量は一体的に認識されます。 1 つの AKS クラスターが複数のストレージ プールを持つことができます。 ストレージ プールは、認証とプロビジョニングの境界としても機能します。 アプリケーション開発者にとってのボリュームの作成と管理を簡素化しながら、オペレーターがストレージ インフラストラクチャを管理するための論理コンストラクトを提供します。
ストレージ クラス
Kubernetes ストレージ クラスは、永続ボリュームを使用して保存の単位を動的に作成する方法を定義します。 詳細については、Kubernetes ストレージ クラスに関するページを参照してください。
量
Kubernetes ボリュームは、特定のポッド内のコンテナーからアクセスできるデータを含むディレクトリです。 ボリュームは永続的または一時的にすることができます。 ボリュームはストレージ プール内でシン プロビジョニングされ、ストレージ プールのパフォーマンス特性 (IOPS、帯域幅、容量) を共有します。
永続ボリューム
永続ボリュームは VM 内のディスクのようなものです。 任意のファイル システムをマウントするために使用できる raw ブロック デバイスを表します。 アプリケーション開発者は、アプリケーションまたはポッド定義と共に永続ボリュームを作成し、ボリュームはステートフル アプリケーションのライフサイクルに関連付けられていることがよくあります。 詳細については、永続ボリュームに関するページをご覧ください。
永続ボリューム要求 (PVC)
永続ボリューム要求を使用して、ストレージ クラスに基づいてストレージを自動的にプロビジョニングします。