Azure Kubernetes Service (AKS) での可用性ゾーンの概要
この記事では、Azure Kubernetes Service (AKS) で可用性ゾーンを使用して、アプリケーションの可用性を向上させる方法の概要を説明します。
AKS クラスターは、ノードやストレージなどのリソースを、基になる Azure インフラストラクチャの論理セクションに分散します。 可用性ゾーンを使用すると、異なる可用性ゾーンにデプロイされたノード間は物理的に分離されます。 クラスター全体に構成された複数の可用性ゾーンでデプロイされる AKS クラスターは、ハードウェア障害または計画メンテナンス イベントから保護するための高レベルの可用性を提供します。
可用性ゾーンとは
可用性ゾーンは、データセンターの障害からアプリケーションとデータを保護するのに役立ちます。 ゾーンは、Azure リージョン内の一意の物理的な場所です。 各ゾーンには、独立した電源、冷却、ネットワーキングを備えた 1 つ以上のデータセンターが含まれます。 回復性を確保するため、ゾーンが有効になっているすべてのリージョンに常に複数のゾーンがあります。 可用性ゾーンはリージョン内で物理的に分離されているため、データセンターで障害が発生してもアプリケーションとデータは保護されます。
可用性ゾーンを使用してデプロイされる AKS クラスターでは、1 つのリージョン内の複数のゾーンにノードを分散させることができます。 たとえば、米国東部 2 リージョンのクラスターでは、米国東部 2 の 3 つすべての可用性ゾーンでノードを作成できます。 この AKS クラスターリソースの分散により、特定のゾーンの障害に対する回復力があるため、クラスターの可用性が向上します。
1 つのゾーンが使用できなくなった場合でも、アプリケーションは、複数のゾーンをまたいで分散するように構成されたクラスター上で引き続き実行されます。
詳細については、「Azure 可用性ゾーンの使用」を参照してください。
Note
クラスター オートスケーラーで可用性ゾーンを実装する場合は、ゾーンごとに 1 つのノード プールを使用することをお勧めします。 --balance-similar-node-groups
パラメーターを true
に設定すると、スケールアップ操作中にワークロードのゾーン間でノードをバランス良く分散させることができます。 この方法が実装されていない場合、スケールダウン操作によって、ゾーン間のノードのバランスが損なわれる可能性があります。 この構成では、類似したノード グループに同じ数のノードが含まれるとは限りません。
- 現在、分散はスケールアップ操作中にのみ行われます。 クラスター オートスケーラーは、ノード グループの相対サイズに関係なく、使用率の低いノードをスケールダウンします。
- クラスター オートスケーラーは、既存のすべてのポッドを実行するために必要な数のノードのみを追加します。 一部のグループは、スケジュールされたポッドが多い場合、他のグループよりも多くのノードを持つ可能性があります。
- クラスター オートスケーラーは、保留中のポッドの同一セットをサポートできるノード グループ間でのみバランスを調整します。
Azure ゾーン冗長ストレージ (ZRS) ディスクを使用して、選択したリージョンの 3 つの可用性ゾーンにストレージをレプリケートすることもできます。 ZRS ディスクを使用すると、データを失うことなく可用性ゾーンの障害から復旧できます。 詳細については、「マネージド ディスク用 ZRS」を参照してください。
制限事項
可用性ゾーンを使用して AKS クラスターを作成する場合、次の制限事項が適用されます。
- 可用性ゾーンは、クラスターまたはノード プールの作成時にのみ定義できます。
- クラスターの作成後に、可用性ゾーンを使用するように既存の非可用性ゾーン クラスターを更新することはできません。
- 選択したノード サイズ (VM SKU) を、選択したすべての可用性ゾーンで使用できる必要があります。
- 可用性ゾーンが有効になっているクラスターでは、複数のゾーンへの分散のために Azure Standard Load Balancer を使用する必要があります。 このロード バランサーの種類は、クラスターの作成時にのみ定義できます。 Standard Load Balancer の詳細と制限事項については、Azure Load Balancer Standard SKU の制限事項に関する記事をご覧ください。
Azure Disk 可用性ゾーンのサポート
Azure マネージド LRS ディスクを使用するボリュームは、ゾーン冗長リソースではなく、ゾーン間のアタッチはサポートされません。 ターゲット ポッドをホストしている指定ノードと同じゾーンに、ボリュームを併置する必要があります。 Azure マネージド ZRS ディスクを使用するボリュームはゾーン冗長リソースです。 これらのボリュームは、すべてのゾーンおよび非ゾーン エージェント ノード上でスケジュールできます。 次の例は、 StandardSSD_ZRS ディスクを使用してストレージ クラスを作成する方法を示しています。
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: managed-csi-zrs
provisioner: disk.csi.azure.com
parameters:
skuName: StandardSSD_ZRS # or Premium_ZRS
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
Kubernetes では、バージョン 1.12 以降で、Azure 可用性ゾーンが認識されます。 ユーザーは、複数ゾーンの AKS クラスターで Azure マネージド ディスクを参照して PersistentVolumeClaim オブジェクトをデプロイすることができます。また、適切な可用性ゾーン内にこの PVC を要求するあらゆるポッドのスケジュール設定が Kubernetes によって管理されます。
Kubernetes バージョン 1.29 以降では、複数の可用性ゾーンに Azure Kubernetes Service (AKS) クラスターをデプロイすると、AKS はゾーン冗長ストレージ (ZRS) を利用して、組み込みのストレージ クラス内にマネージド ディスクを作成します。 ZRS により、ユーザーが選んだリージョン内の複数の Azure 可用性ゾーン間での Azure マネージド ディスクの同期レプリケーションが保証されます。 この冗長性戦略により、アプリケーションの回復性が強化され、データセンターの障害からデータが保護されます。
ただし、ゾーン冗長ストレージ (ZRS) は、ローカル冗長ストレージ (LRS) と比べてコストが高くなる点に注意してください。 コストの最適化が優先される場合は、skuname
パラメーターを LRS に設定して新しいストレージ クラスを作成できます。 その後、永続ボリューム要求 (PVC) で新しいストレージ クラスを使用できます。
次のステップ
Azure Kubernetes Service