Azure Container Storage でマルチゾーン ストレージ冗長性を有効にする
マルチゾーン Azure Kubernetes Service (AKS) クラスターで Azure Container Storage を使用する場合は、マルチゾーン ストレージ プールとゾーン冗長ストレージ (ZRS) ディスクを使用することで、ステートフル アプリケーションの可用性を向上させることができます。 可用性ゾーンを使用する AKS クラスターを作成するには、「Azure Kubernetes Service で可用性ゾーンを使用する」を参照してください。
前提条件
- この記事では、最新バージョン (2.35.0 以降) の Azure CLI が必要です。 「Azure CLI のインストール方法」を参照してください。 Azure Cloud Shell を使用している場合は、最新バージョンが既にインストールされています。 Azure Cloud Shell ではなくローカルでコマンドを実行する場合は、必ず管理特権で実行してください。
- クラスター ノード用の少なくとも 3 つの仮想マシン (VM) (それぞれが少なくとも 4 つの仮想 CPU (vCPU) を持つ) のノード プールを持つ AKS クラスターが必要になります。
- この記事では、AKS クラスターに Azure Container Storage が既にインストールされていることを前提としています。
- Kubernetes コマンド ライン クライアント
kubectl
が必要です。 Azure Cloud Shell を使用している場合は既にインストールされています。または、az aks install-cli
コマンドを実行してローカルにインストールできます。
マルチゾーン ストレージ プールを作成する
ストレージ プール定義では、ストレージの容量を分散するゾーンを指定できます。 ストレージ プールの合計容量は、指定されたゾーンの数に均等に分散されます。 たとえば、2 つのゾーンが指定されている場合、各ゾーンはストレージ プールの容量の半分を取得します。3 つのゾーンが指定されている場合、各ゾーンは合計容量の 3 分の 1 を取得します。 対応するストレージは、各ゾーンにプロビジョニングされます。 これは、Cassandra などのアプリケーション レベルのレプリケーションを提供するワークロードを実行する場合に便利です。
指定したゾーンに使用可能なノードがない場合、そのゾーンでノードが使用可能になると、容量がプロビジョニングされます。 永続ボリューム (PV) は、1 つのゾーンのストレージ プールの容量からのみ作成できます。
zones
の有効な値は、以下のとおりです。
- [""]
- ["1"]
- ["2"]
- ["3"]
- ["1", "2"]
- ["1", "3"]
- ["2", "3"]
- ["1", "2", "3"]
Azure ディスクを使用するマルチゾーン ストレージ プールを作成するには、次の手順に従います。 zones
には、有効な値を選択します。
任意のテキスト エディターを使用して、
code acstor-multizone-storagepool.yaml
などの YAML マニフェスト ファイルを作成します。次のコードを貼り付けて、ファイルを保存します。 ストレージ プールの name の値は何でもかまいません。 記憶域には、プールの記憶域容量を Gi または Ti で指定します。
apiVersion: containerstorage.azure.com/v1 kind: StoragePool metadata: name: azuredisk namespace: acstor spec: zones: ["1", "2", "3"] poolType: azureDisk: {} resources: requests: storage: 1Ti
YAML マニフェスト ファイルを適用してマルチゾーンのストレージ プールを作成します。
kubectl apply -f acstor-multizone-storagepool.yaml
ゾーン冗長ストレージ (ZRS) ディスクを使用する
ワークロードでストレージの冗長性が必要な場合は、ゾーン冗長ストレージを使用するディスクを利用できます。このディスクは、プライマリ リージョンの 3 つの Azure 可用性ゾーンにデータを同期的にコピーします。
次の例のように、ディスク skuName
を、ストレージ プール定義で StandardSSD_ZRS
または Premium_ZRS
として指定できます。
apiVersion: containerstorage.azure.com/v1
kind: StoragePool
metadata:
name: azuredisk
namespace: acstor
spec:
poolType:
azureDisk:
skuName: Premium_ZRS
resources:
requests:
storage: 1Ti