Kubernetes クラスターのストレージ オプション

この記事では、Amazon Elastic Kubernetes Service (Amazon EKS) と Azure Kubernetes Service (AKS) のストレージ機能を比較し、AKS にワークロード データを格納するオプションについて説明します。

注意

この記事は、Amazon EKS に詳しいプロフェッショナルの方を対象に、AKS についてわかりやすく説明した連載記事の一部です。

Amazon EKS ストレージ オプション

Amazon EKS では、Kubernetes バージョン 1.11 以降、永続ボリューム要求に対して gp2 という名前の既定の StorageClass がクラスターにあります。 管理者は、さらに多くのストレージ クラスを定義するために次のようなドライバーを追加できます。

  • Amazon EKS アドオンとしての Amazon EBS CSI ドライバー
  • Amazon EBS CSI の自己管理型アドオン
  • Amazon EFS CSI ドライバー
  • Amazon FSx for Lustre CSI ドライバー
  • Amazon FSx for NetApp ONTAP CSI ドライバー

ドライバーとストレージ クラスを追加することで、次のようなストレージ サービスを使用できます。

  • Amazon Elastic Block Store (Amazon EBS)。これは永続的なデータを格納するために Amazon Elastic Compute Cloud (EC2) インスタンスで使用されるブロックレベルのストレージ ソリューションです。 このサービスは、必要なパフォーマンスに応じて、Standard SSD、Premium SSD、Ultra Disk などのいくつかの SKU がある Azure Disk Storage に類似しています。

  • Amazon Elastic File System (Amazon EFS)。これはインスタンス間で共有できる外部ファイルシステムへのネットワーク ファイルシステム (NFS) アクセスを提供します。 同等の Azure ソリューションは、サーバー メッセージ ブロック (SMB) 3.0 と NFS アクセスの両方がある Azure Files と Azure Files Premium です。

  • Lustre。これはハイ パフォーマンス コンピューティング (HPC) で一般的に使用されるオープン ソース ファイル システムです。 Azure では、機械学習や HPC などの速度が重要なワークロードに Ultra Disks または Azure HPC Cache を使用できます。

  • NetApp ONTAP。これはアマゾン ウェブ サービス (AWS) のフル マネージド ONTAP 共有ストレージです。 Azure NetApp Files が、NetApp テクノロジ上に構築された類似の Azure ファイル ストレージ サービスです。

AKS ストレージ オプション

各 AKS クラスターには、次の事前に作成されたストレージ クラスが既定で含まれています。

  • 既定のストレージ クラス managed-csi は、Disk Storage Standard SSD を使用します。 Standard SSD は、1 秒あたりの入出力操作 (IOPS) が比較的低い状態で一貫したパフォーマンスを必要とするワークロード向けに最適化されたコスト効率の高いストレージ オプションです。
  • managed-csi-premium クラスは、Disk Storage Premium SSD マネージド ディスクを使用します。
  • azurefile-csi クラスは、Azure Files を使用し、SMB または NFS を使用することで、同じストレージ ボリュームへの同時共有アクセスを提供します。
  • azurefile-csi-premium クラスは、IOPS 集中型のワークロードがあるファイル共有に Azure Files Premium を使用します。 Azure Files Premium は、SSD ストレージを利用して、短い待機時間と高いスループットを提供します。

これらのオプションを拡張するには、他のストレージ クラスを追加し、次のような他の使用可能なストレージ ソリューションと統合します。

  • Ultra Disk Storage
  • Azure NetApp Files
  • HPC Cache
  • NFS サーバー
  • サード パーティのストレージ ソリューション

Azure Disk Storage

既定では、AKS クラスターには、Disk Storage を使用する事前に作成された managed-csimanaged-csi-premium というストレージ クラスが付属しています。 Amazon EBS と同様に、これらのクラスでは、ポッド アクセス用にノードに接続されるマネージド ディスクまたはブロック デバイスが作成されます。

Disk Storage ストレージ クラスを使用すると、静的動的の両方のボリューム プロビジョニングが可能になります。 解放ポリシーにより、永続ボリュームとともにディスクが確実に削除されます。 永続ボリューム要求を編集することで、ディスクを拡張できます。

これらのストレージ クラスは、ローカル冗長ストレージ (LRS) がある Azure マネージド ディスクを使用します。 LRS は、データが Azure プライマリ リージョンの 1 つの物理的な場所に 3 つの同期コピーを持っていることを意味します。 LRS は最もコストの低いレプリケーション オプションですが、データセンターの障害に対する保護は提供されません。 このリスクを軽減するには、組み込みのスナップショット テクノロジを使用できる VeleroAzure Backup などのソリューションを使用して、Disk Storage データの定期的なバックアップまたはスナップショットを作成してください。

両方のストレージ クラスはマネージド ディスクによってサポートされ、いずれもソリッド ステート ディスク (SSD) ドライブを使用します。 Standard と Premium のディスクの違いを理解することが重要です。

  • Standard ディスクは、サイズとストレージ トランザクションに基づいて価格が設定されます。
  • Premium ディスクはサイズによってのみ課金されるため、大量のトランザクションを必要とするワークロードでは比較的安くなる可能性があります。
  • Premium SSD では、この比較に示すように、最大のスループットと IOPS が高くなります。
  • ほとんどの運用と開発のワークロードには Premium ストレージをお勧めします。

プライマリ ストレージ クラスとして Azure マネージド ディスクを使用する場合は、Kubernetes クラスターに選択する仮想マシン (VM) SKU を考慮してください。 Azure VM には、接続できるディスクの数が制限されていて、制限は VM サイズによって異なります。 また、Azure ディスクは ReadWriteOnce としてマウントされるため、1 つのポッドでしか使用できません。

Ultra Disk Storage

Ultra Disk Storage は、Azure VM に対して高いスループット、高い IOPS、一貫して短い待機時間のディスク ストレージを提供する Azure マネージド ディスク層です。 Ultra Disk Storage は、データとトランザクションの負荷が高いワークロードを対象としています。 他の Disk Storage SKU や Amazon EBS と同様に、Ultra Disk Storage は一度に 1 つのポッドをマウントし、同時アクセスは提供しません。

AKS クラスターで Ultra Disk Storage を有効にするには、フラグ --enable-ultra-ssd を使用します。

Ultra Disk Storage を選択した場合は、その制限事項に注意し、互換性のある VM サイズを選択するようにしてください。 Ultra Disk Storage では、ローカル冗長ストレージ (LRS) レプリケーションを使用できます。

Azure Files

Disk Storage はボリュームへの同時アクセスを提供できませんが、Azure Files を使用し、SMB プロトコルを使用することで接続して、Azure Storage によってサポートされる共有ボリュームをマウントできます。 このプロセスにより、Amazon EFS に類似したネットワーク接続ストレージが提供されます。 Disk Storage と同様に、次の 2 つのオプションがあります。

  • Azure Files Standard ストレージは、通常のハード ディスク ドライブ (HDD) によってサポートされます。
  • Azure Files Premium ストレージは、高パフォーマンス SSD ドライブでファイル共有をサポートします。 Premium のファイル共有の最小サイズは 100 GB です。

Azure Files には、障害が発生した場合にデータを保護するための次のストレージ アカウント レプリケーション オプションがあります。

Azure Files のコストを最適化するには、Azure Files 容量予約を購入します。

Azure NetApp Files

AWS NetApp ONTAP と同様、Azure NetApp Files は、エンタープライズクラスのパフォーマンスが高い従量制課金ファイル ストレージ サービスです。 Azure NetApp Files は、NetApp ソリューションを使用して Azure で全面的に管理されます。 Azure Files と同様に、Azure NetApp Files では複数のポッドがボリュームをマウントできます。 Kubernetes 用のオープン ソースの動的ストレージ オーケストレーターである Astra Trident を使用して、Azure NetApp Files を使用するように AKS クラスターを構成できます。

Azure NetApp Files のリソース制限」に注意してください。 Azure NetApp Files の容量プールの最小サイズは 4 TiB です。 Azure NetApp Files では、使用容量ではなく、プロビジョニングされたサイズ別に課金されます。

Azure HPC Cache

Azure HPC Cache は、クラウド ソリューションのすべてのスケーラビリティを駆使して、HPC タスク用にデータへのアクセスを高速化します。 このストレージ ソリューションを選択する場合は、Azure HPC キャッシュをサポートするリージョンに AKS クラスターをデプロイするようにしてください。

NFS サーバー

共有 NFS アクセスに最適なオプションは、Azure Files または Azure NetApp Files を使用することです。 ボリュームをエクスポートする Azure VM 上に NFS サーバーを作成することもできます。

このオプションでは静的プロビジョニングのみがサポートされることに注意してください。 NFS 共有はサーバー上で手動でプロビジョニングする必要があり、AKS から自動的にはできません。

このソリューションは、サービスとしてのプラットフォーム (PaaS) ではなく、サービスとしてのインフラストラクチャ (IaaS) に基づいています。 OS の更新、高可用性、バックアップ、ディザスター リカバリー、スケーラビリティなどの、NFS サーバーの管理はお客様が行う必要があります。

サードパーティ ソリューション

Amazon EKS と同様に、AKS は Kubernetes の実装であり、サード パーティの Kubernetes ストレージ ソリューションを統合できます。 Kubernetes 用のサード パーティ製ストレージ ソリューションの例を次に示します。

  • Rook は、ストレージ管理者タスクを自動化することで、分散ストレージ システムを自己管理型ストレージ サービスに変換します。 Rook は、各ストレージ プロバイダーの Kubernetes オペレーター経由でサービスを提供します。
  • GlusterFS は、一般的な既製ハードウェアを使用して、データ負荷が高く帯域幅を集中的に消費するタスク向けの大規模な分散ストレージ ソリューションを作成する、無料でオープンソースのスケーラブルなネットワーク ファイル システムです。
  • Ceph は、汎用的なハードウェア コンポーネントから構築された 1 つのクラスターのオブジェクト、ブロック、およびファイル インターフェイスがある、信頼性と拡張性の高い統合ストレージ サービスを提供します。
  • MinIO マルチクラウド オブジェクト ストレージにより、企業は任意のクラウドで AWS S3 と互換性のあるデータ インフラストラクチャを構築でき、データとアプリケーションに一貫性のある移植可能なインターフェイスが提供されます。
  • Portworx は、Kubernetes プロジェクトとコンテナー ベースのイニシアティブのためのエンド ツー エンドのストレージとデータの管理ソリューションです。 Portworx は、コンテナー単位のストレージ、ディザスター リカバリー、データ セキュリティ、マルチクラウド移行を提供します。
  • Quobyte は、パフォーマンスのスケーリング、大量のデータの管理、管理の簡素化のために、任意のサーバーまたはクラウドにデプロイできる高パフォーマンスのファイルおよびオブジェクトのストレージを提供します。
  • Ondat は、あらゆるプラットフォームに一貫したストレージ レイヤーを提供します。 ストレージ レイヤーを管理しなくても、Kubernetes 環境でデータベースまたは永続的なワークロードを実行できます。

Kubernetes ストレージに関する考慮事項

Amazon EKS または AKS のストレージ ソリューションを選択するときは、次の要因を考慮してください。

ストレージ クラスのアクセス モード

Kubernetes バージョン 1.21 以降では、AKS および Amazon EKS のストレージ クラスで、Container Storage Interface (CSI) ドライバーのみが既定で使用されます。

サービスが異なると、アクセス モードが異なるストレージ クラスがサポートされます。

サービス ReadWriteOnce ReadOnlyMany ReadWriteMany
Azure ディスク X
Azure Files X x X
Azure NetApp Files X x X
NFS サーバー X x X
Azure HPC Cache X x X

動的と静的のプロビジョニング

ボリュームを動的にプロビジョニングして、永続ボリュームを静的に作成する管理オーバーヘッドを軽減します。 ポッドを削除するときに未使用のディスクが発生しないように、適切な解放ポリシーを設定します。

Backup

永続的なデータをバックアップするツールを選択します。 ツールは、スナップショット、Azure BackupVeleroKasten などのストレージの種類に適合する必要があります。

コスト最適化

Azure Storage のコストを最適化するには、Azure 予約を使用します。 Azure の予約をサポートするサービスを確認してください。 Kubernetes クラスターのコスト管理に関するページも参照してください。

共同作成者

この記事は、Microsoft によって保守されています。 当初の寄稿者は以下のとおりです。

プリンシパルの作成者:

その他の共同作成者:

  • Chad Kittel | プリンシパル ソフトウェア エンジニア
  • Ed Price | シニア コンテンツ プログラム マネージャー
  • Theano Petersen | テクニカル ライター

パブリックでない LinkedIn プロファイルを表示するには、LinkedIn にサインインします。

次のステップ