Azure Kubernetes Services (AKS) のストレージとバックアップに関するベスト プラクティスBest practices for storage and backups in Azure Kubernetes Service (AKS)

Azure Kubernetes Service (AKS) でクラスターを作成して管理する際に、多くの場合、アプリケーションにはストレージが必要になります。As you create and manage clusters in Azure Kubernetes Service (AKS), your applications often need storage. アプリケーションに適切なストレージを提供できるように、パフォーマンスのニーズとポッドのアクセス方法を理解することが重要です。It's important to understand the performance needs and access methods for pods so that you can provide the appropriate storage to applications. AKS ノードのサイズが、これらのストレージの選択に影響する可能性があります。The AKS node size may impact these storage choices. 接続されたストレージをバックアップし、その復元プロセスをテストする方法を計画する必要もあります。You should also plan for ways to back up and test the restore process for attached storage.

このベスト プラクティスの記事では、クラスター オペレーターを対象としたストレージに関する考慮事項に重点を置いています。This best practices article focuses on storage considerations for cluster operators. この記事では、次のことについて説明します。In this article, you learn:

  • 利用可能なストレージの種類What types of storage are available
  • ストレージ パフォーマンスのために AKS ノードのサイズを適切に設定する方法How to correctly size AKS nodes for storage performance
  • ボリュームの動的なプロビジョニングと静的なプロビジョニングの違いDifferences between dynamic and static provisioning of volumes
  • データ ボリュームをバックアップしてセキュリティで保護する方法Ways to back up and secure your data volumes

適切なストレージの種類を選択するChoose the appropriate storage type

ベスト プラクティス ガイダンス - 適切なストレージを選択するためにアプリケーションのニーズを理解します。Best practice guidance - Understand the needs of your application to pick the right storage. 運用環境のワークロードには、高パフォーマンスの SSD を基盤とするストレージを使用します。Use high performance, SSD-backed storage for production workloads. 複数のコンカレント接続が必要な場合は、ネットワークベースのストレージを計画します。Plan for network-based storage when there is a need for multiple concurrent connections.

多くの場合、アプリケーションではさまざまな種類と速度のストレージが必要です。Applications often require different types and speeds of storage. ご利用のアプリケーションでは、個々のポッドに接続するストレージが必要ですか、それとも複数のポッドで共有されるストレージが必要ですか。Do your applications need storage that connects to individual pods, or shared across multiple pods? ストレージは、データへの読み取り専用アクセスのためのものですか、それとも大量の構造化データを書き込むためのものですか。Is the storage for read-only access to data, or to write large amounts of structured data? これらのストレージでは、使用するストレージの最も適した種類を決定する必要があります。These storage needs determine the most appropriate type of storage to use.

次の表に、使用可能なストレージの種類とその機能の概要を示します。The following table outlines the available storage types and their capabilities:

ユース ケースUse case ボリューム プラグインVolume plugin 読み取り/書き込み (1 回のみ)Read/write once 読み取り専用 (複数回)Read-only many 読み取り/書き込み (複数回)Read/write many Windows Server コンテナーのサポートWindows Server container support
共有構成Shared configuration Azure FilesAzure Files はいYes はいYes はいYes はいYes
構造化されたアプリ データStructured app data Azure ディスクAzure Disks はいYes いいえNo いいえNo はいYes
非構造化データ、ファイル システム操作Unstructured data, file system operations BlobFuse (プレビュー)BlobFuse (preview) はいYes はいYes はいYes いいえNo

AKS のボリュームに対して提供される、2 つの主な種類のストレージが、Azure ディスクまたは Azure ファイルでサポートされます。The two primary types of storage provided for volumes in AKS are backed by Azure Disks or Azure Files. セキュリティを向上させるため、両方の種類のストレージでは既定で Azure Storage Service Encryption (SSE) が使用され、保存データが暗号化されます。To improve security, both types of storage use Azure Storage Service Encryption (SSE) by default that encrypts data at rest. ディスクは現在、AKS ノード レベルで Azure Disk Encryption を使用して暗号化することはできません。Disks cannot currently be encrypted using Azure Disk Encryption at the AKS node level.

Azure ファイルは現在、Standard パフォーマンス レベルで使用可能です。Azure Files are currently available in the Standard performance tier. Azure ディスクは、以下の Standard と Premium のパフォーマンス レベルで使用できます。Azure Disks are available in Standard and Premium performance tiers:

  • Premium。このディスクは、高パフォーマンスのソリッドステート ディスク (SSD) でサポートされます。Premium disks are backed by high-performance solid-state disks (SSDs). すべての運用環境のワークロードに Premium ディスクをお勧めします。Premium disks are recommended for all production workloads.
  • Standard。このディスクは標準のスピニング ディスク (HDD) でサポートされ、アーカイブまたはアクセス頻度の少ないデータに適しています。Standard disks are backed by regular spinning disks (HDDs), and are good for archival or infrequently accessed data.

アプリケーション パフォーマンスのニーズとアクセス パターンを理解して、適切なストレージ レベルを選択してください。Understand the application performance needs and access patterns to choose the appropriate storage tier. マネージド ディスクのサイズとパフォーマンス レベルの詳細については、Azure マネージド ディスクの概要に関するページを参照してくださいFor more information about Managed Disks sizes and performance tiers, see Azure Managed Disks overview

アプリケーションのニーズを定義するためにストレージ クラスを作成して使用するCreate and use storage classes to define application needs

使用するストレージの種類は、Kubernetes のストレージ クラスを使って定義します。The type of storage you use is defined using Kubernetes storage classes. その後、ストレージ クラスはポッドまたはデプロイの仕様で参照されます。The storage class is then referenced in the pod or deployment specification. これらの定義を組み合わせて適切なストレージを作成し、それをポッドに接続します。These definitions work together to create the appropriate storage and connect it to pods. 詳細については、AKS のストレージ クラスに関するページを参照してください。For more information, see Storage classes in AKS.

ストレージのニーズに合わせてノードのサイズを設定するSize the nodes for storage needs

ベスト プラクティス ガイダンス - 各ノード サイズでは、最大数のディスクがサポートされます。Best practice guidance - Each node size supports a maximum number of disks. また、さまざまなノード サイズで、さまざまな量のローカル ストレージやネットワーク帯域幅が提供されます。Different node sizes also provide different amounts of local storage and network bandwidth. 適切なサイズのノードをデプロイするために、アプリケーション要求について計画します。Plan for your application demands to deploy the appropriate size of nodes.

AKS ノードは Azure VM として実行されます。AKS nodes run as Azure VMs. さまざまな種類とサイズの VM を使用できます。Different types and sizes of VM are available. 各 VM サイズでは、CPU やメモリなど、異なる量のコア リソースが提供されます。Each VM size provides a different amount of core resources such as CPU and memory. これらの VM サイズには、接続できる最大数のディスクがあります。These VM sizes have a maximum number of disks that can be attached. ストレージのパフォーマンスは、最大のローカルおよび接続されるディスクの IOPS (1 秒あたりの入出力操作) に対する VM サイズによっても異なります。Storage performance also varies between VM sizes for the maximum local and attached disk IOPS (input/output operations per second).

ご利用のアプリケーションでストレージ ソリューションとして Azure ディスクが必要な場合は、適切なノードの VM サイズを計画して選択します。If your applications require Azure Disks as their storage solution, plan for and choose an appropriate node VM size. VM サイズを選ぶ場合の要因は、CPU とメモリの量だけではありません。The amount of CPU and memory isn't the only factor when you choose a VM size. ストレージの機能も重要です。The storage capabilities are also important. たとえば、Standard_B2msStandard_DS2_v2 の両方の VM サイズには、同じような量の CPU とメモリ リソースが含まれます。For example, both the Standard_B2ms and Standard_DS2_v2 VM sizes include a similar amount of CPU and memory resources. 次の表に示すように、その潜在的なストレージのパフォーマンスは異なります。Their potential storage performance is different, as shown in the following table:

ノードの種類とサイズNode type and size vCPUvCPU メモリ (GiB)Memory (GiB) 最大データ ディスク数Max data disks キャッシュされていないディスクの最大 IOPSMax uncached disk IOPS キャッシュされていない場合のスループット (MBps)Max uncached throughput (MBps)
Standard_B2msStandard_B2ms 22 88 44 1,9201,920 22.522.5
Standard_DS2_v2Standard_DS2_v2 22 77 88 6,4006,400 9696

ここでは、Standard_DS2_v2 で、2 倍の数の接続ディスクが許可され、3 倍から 4 倍の量の IOPS とディスク スループットが提供されます。Here, the Standard_DS2_v2 allows double the number of attached disks, and provides three to four times the amount of IOPS and disk throughput. コア コンピューティング リソースだけを見て、コストを比較した場合、Standard_B2ms VM サイズを選択する可能性があります。その場合、ストレージのパフォーマンスは低く、制限されます。If you only looked at the core compute resources and compared costs, you may choose the Standard_B2ms VM size and have poor storage performance and limitations. アプリケーション開発チームと協力し、ストレージ容量とパフォーマンスのニーズを理解してください。Work with your application development team to understand their storage capacity and performance needs. パフォーマンスのニーズを満たすため、あるいはニーズを上回るように、AKS ノードに適した VM サイズを選択します。Choose the appropriate VM size for the AKS nodes to meet or exceed their performance needs. 定期的にアプリケーションのベースラインを設定し、必要に応じて、VM サイズを調整します。Regularly baseline applications to adjust VM size as needed.

使用可能な VM サイズの詳細については、「Azure の Linux 仮想マシンのサイズ」を参照してください。For more information about available VM sizes, see Sizes for Linux virtual machines in Azure.

ボリュームを動的にプロビジョニングするDynamically provision volumes

ベスト プラクティス ガイダンス - 管理オーバーヘッドを減らし、スケーリングできるようにするために、永続ボリュームを静的に作成して割り当てないでください。Best practice guidance - To reduce management overhead and let you scale, don't statically create and assign persistent volumes. 動的プロビジョニングを使用します。Use dynamic provisioning. ストレージ クラスでは、ポッドが削除された後、不要なストレージ コストを最小限に抑えるために適切な解放ポリシーを定義します。In your storage classes, define the appropriate reclaim policy to minimize unneeded storage costs once pods are deleted.

ポッドにストレージを接続する必要がある場合は、永続ボリュームを使用します。When you need to attach storage to pods, you use persistent volumes. これらの永続ボリュームは、手動でまたは動的に作成できます。These persistent volumes can be created manually or dynamically. 永続ボリュームを手動で作成する場合、管理オーバーヘッドが増え、スケーリング機能が制限されます。Manual creation of persistent volumes adds management overhead, and limits your ability to scale. 永続ボリュームの動的プロビジョニングを使用すると、ストレージの管理が簡略化され、必要に応じてアプリケーションを拡張し、スケーリングすることができます。Use dynamic persistent volume provisioning to simplify storage management and allow your applications to grow and scale as needed.

Azure Kubernetes Services (AKS) クラスターでの永続ボリューム要求

永続ボリューム要求 (PVC) を使用すれば、必要に応じて、ストレージを動的に作成することができます。A persistent volume claim (PVC) lets you dynamically create storage as needed. ポッドで要求されたときに、基になる Azure ディスクが生成されます。The underlying Azure disks are created as pods request them. ポッド定義で、ボリュームを作成し、設計されたマウント パスに接続するよう要求しますIn the pod definition, you request a volume to be created and attached to a designed mount path

ボリュームを動的に作成して使用する方法の概念については、「永続ボリューム要求」を参照してください。For the concepts on how to dynamically create and use volumes, see Persistent Volumes Claims.

これらのボリュームの動作を確認する場合は、Azure ディスクまたは Azure Files で動的に永続ボリュームを作成して使用する方法を参照してください。To see these volumes in action, see how to dynamically create and use a persistent volume with Azure Disks or Azure Files.

ストレージ クラス定義の一部として、適切な reclaimPolicy を設定します。As part of your storage class definitions, set the appropriate reclaimPolicy. この reclaimPolicy が、ポッドが削除されて永続ボリュームが不要になる可能性がある場合の、基礎となる Azure Storage リソースの動作を制御します。This reclaimPolicy controls the behavior of the underlying Azure storage resource when the pod is deleted and the persistent volume may no longer be required. 基礎となるストレージ リソースは削除することも、将来のポッドで使用するために保持しておくこともできます。The underlying storage resource can be deleted, or retained for use with a future pod. reclaimPolicy は、retain または delete に設定できます。The reclaimPolicy can set to retain or delete. アプリケーションのニーズを理解し、使用および課金される未使用ストレージの量を最小限に抑えるために保持されるストレージの定期チェックを実装します。Understand your application needs, and implement regular checks for storage that is retained to minimize the amount of un-used storage that is used and billed.

ストレージ クラス オプションの詳細については、ストレージの解放ポリシーに関するページを参照してください。For more information about storage class options, see storage reclaim policies.

データをセキュリティで保護してバックアップするSecure and back up your data

ベスト プラクティス ガイダンス - Velero や Azure Site Recovery など、ご利用のストレージの種類に適したツールを使って、データをバックアップします。Best practice guidance - Back up your data using an appropriate tool for your storage type, such as Velero or Azure Site Recovery. それらのバックアップの整合性とセキュリティを確認します。Verify the integrity, and security, of those backups.

アプリケーションでディスク上またはファイル内に保持されているデータを格納して使用する場合、定期的にそのデータのバックアップまたはスナップショットを作成する必要があります。When your applications store and consume data persisted on disks or in files, you need to take regular backups or snapshots of that data. Azure ディスクでは、組み込みのスナップショット テクノロジを使用できます。Azure Disks can use built-in snapshot technologies. スナップショット操作を実行する前に、アプリケーションでディスクにフラッシュ書き込みを行うためのフックが必要になる場合があります。You may need to a hook for your applications to flush writes to disk before you perform the snapshot operation. Velero では、追加のクラスター リソースおよび構成と共に永続ボリュームをバックアップできます。Velero can back up persistent volumes along with additional cluster resources and configurations. アプリケーションから状態を削除できない場合は、永続ボリュームからデータをバックアップし、復元操作を定期的にテストしてデータの整合性と必要なプロセスを確認します。If you can't remove state from your applications, back up the data from persistent volumes and regularly test the restore operations to verify data integrity and the processes required.

データ バックアップのさまざまな方法の制限事項、またスナップショットを作成する前にデータを静止する必要がある場合の制限事項を理解します。Understand the limitations of the different approaches to data backups and if you need to quiesce your data prior to snapshot. データ バックアップで、クラスター デプロイのアプリケーション環境を必ずしも復元できるとは限りません。Data backups don't necessarily let you restore your application environment of cluster deployment. このようなシナリオの詳細については、「Azure Kubernetes Service (AKS) での事業継続とディザスター リカバリーに関するベスト プラクティス」を参照してください。For more information about those scenarios, see Best practices for business continuity and disaster recovery in AKS.

次の手順Next steps

この記事では、AKS のストレージのベスト プラクティスに重点を置きました。This article focused on storage best practices in AKS. Kubernetes のストレージの基本の詳細については、AKS におけるアプリケーションのストレージの概念に関するページを参照してください。For more information about storage basics in Kubernetes, see Storage concepts for applications in AKS.