近接配置グループを使用して Azure Kubernetes Service (AKS) クラスターの待機時間を短縮する

注意

AKS 上で近接配置グループを使用すると、コロケーションはエージェント ノードにのみ適用されます。 ノード間、および対応するホストされたポッド間の待機時間が短縮されます。 コロケーションは、クラスターのコントロール プレーンの配置には影響しません。

Azure にアプリケーションをデプロイするときに、複数のリージョンまたは可用性ゾーンに仮想マシン (VM) インスタンスを分散すると、ネットワーク待機時間が発生し、アプリケーションの全体的なパフォーマンスに影響を及ぼすおそれがあります。 近接配置グループとは、Azure コンピューティング リソースが物理的に互いの近くに配置されるようにするために使用される論理的なグループ化です。 ゲーム、エンジニアリング シミュレーション、高頻度取引 (HFT) などの一部のアプリケーションでは、待機時間が短く、タスクが短時間で完了することが必要です。 同様のハイパフォーマンス コンピューティング (HPC) シナリオでは、クラスターのノード プールに近接配置グループ (PPG) を使用することを検討してください。

開始する前に

この記事では、Azure CLI バージョン 2.14 以降が必要です。 バージョンを確認するには、az --version を実行します。 インストールまたはアップグレードする必要がある場合は、Azure CLI のインストールに関するページを参照してください。

制限事項

  • 近接配置グループは、1 つの可用性ゾーンにだけマップできます。
  • ノード プールでは、Virtual Machine Scale Sets を使用して近接配置グループを関連付ける必要があります。
  • ノード プールでは、ノード プールの作成時にのみ近接配置グループを関連付けることができます。

ノード プールと近接配置グループ

近接配置グループでデプロイする最初のリソースは、特定のデータ センターに接続します。 同じ近接配置グループを使用してデプロイした追加のリソースはすべて、同じデータ センター内に併置されます。 近接配置グループを使用しているリソースがすべて停止 (割り当てを解除) または削除されると、近接配置グループはアタッチされていない状態になります。

  • 複数のノード プールを 1 つの近接配置グループに関連付けることができます。
  • 1 つのノード プールは、1 つの近接配置グループとだけ関連付けることができます。

可用性ゾーンを使用した近接配置グループの構成

注意

近接配置グループでは、ノード プールが 1 つだけの可用性ゾーンを使用することが必要ですが、99.9% のベースラインの Azure VM SLA は、1 つのゾーン内の VM に対しても有効です。

近接配置グループはノード プールの概念であり、個々のノード プールに関連付けられています。 PPG リソースを使用しても AKS コントロール プレーンの可用性には影響しません。これは、ゾーンを使用してどのようにクラスターを設計するかに影響する可能性があります。 クラスターが複数のゾーンに分散されるようにするには、次の設計を使用することをお勧めします。

  • 3 つのゾーンを使用する最初のシステム プールが存在し、システム ポッドが専用ノード プールに配置されるように関連付けられた近接配置グループは存在しない、複数のゾーンに分散するクラスターをプロビジョニングします。
  • 単一のゾーンを持つ追加のユーザー ノード プールと各プールに関連付けられた近接配置グループを追加します。 例としては、ゾーン 1 内の nodepool1 と PPG1、ゾーン 2 内の nodepool2 とPPG2、ゾーン 3 内の nodepool3 と PPG3 などです。 この構成によって、クラスター レベルで、ノードは複数のゾーンに分散され、個々のノード プールはそれぞれ専用の PPG リソースを持つ指定されたゾーン内に併置されることが保証されます。

近接配置グループを使用して新しい AKS クラスターを作成する

高速ネットワークを使用すると、仮想マシンのネットワーク パフォーマンスが大幅に向上します。 理想的には、近接配置グループを高速ネットワークと合わせて使用します。 既定では、AKS によりサポートされている仮想マシン インスタンスで高速ネットワークが使用されます。これには、2 つ以上の vCPU を持つほとんどの Azure 仮想マシンが含まれます。

  1. az group create コマンドを使用して、Azure リソース グループを作成します。

    az group create --name myResourceGroup --location centralus
    
  2. az ppg create コマンドを使用して、近接配置グループを作成します。 出力の ID 値を必ず書き留めます。

    az ppg create -n myPPG -g myResourceGroup -l centralus -t standard
    

    コマンドは、次の出力例と同様の出力を生成します。これには、後の CLI コマンドに必要な ID 値が含まれています。

    {
      "availabilitySets": null,
      "colocationStatus": null,
      "id": "/subscriptions/yourSubscriptionID/resourceGroups/myResourceGroup/providers/Microsoft.Compute/proximityPlacementGroups/myPPG",
      "location": "centralus",
      "name": "myPPG",
      "proximityPlacementGroupType": "Standard",
      "resourceGroup": "myResourceGroup",
      "tags": {},
      "type": "Microsoft.Compute/proximityPlacementGroups",
      "virtualMachineScaleSets": null,
      "virtualMachines": null
    }
    
  3. az aks create コマンドを使用して AKS クラスターを作成し、myPPGResourceID 値を前の手順の近接配置グループ リソース ID で置き換えます。

    az aks create \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --ppg myPPGResourceID
    

既存のクラスターに近接配置グループを追加する

新しいノード プールを作成することにより、既存のクラスターに近接配置グループを追加できます。 その後、必要に応じて、既存のワークロードを新しいノード プールに移行してから、元のノード プールを削除することができます。

前に作成したのと同じ近接配置グループを使用して、AKS クラスター内の両方のノード プールのエージェント ノードが、物理的に同じデータ センターに配置されるようにします。

  • az aks nodepool add コマンドを使用して新しいノード プールを作成し、myPPGResourceID 値を近接配置グループ リソース ID で置き換えます。

    az aks nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name mynodepool \
        --node-count 1 \
        --ppg myPPGResourceID
    

クリーンアップ

  • az group delete コマンドを使用して、Azure リソース グループとそのリソースを削除します。

    az group delete --name myResourceGroup --yes --no-wait
    

次のステップ

近接配置グループについてさらに学習します。