次の方法で共有


Azure Kubernetes Service (AKS) で Virtual Machines ノード プールを使用する

この記事では、AKS の新しい仮想マシン ノード プールの種類について説明します。

Virtual Machines ノード プールを使用すると、AKS は、すべての単一ノードのプロビジョニングとブートストラップを直接管理します。 Virtual Machine Scale Sets ノード プールの場合、AKS は Virtual Machine Scale Sets のモデルを管理し、それを使用してノード プール内のすべてのノード間で一貫性を実現します。 Virtual Machines ノード プールを使用すると、個々のワークロードに最適な仮想マシンを使用してクラスターを調整できます。

概要

どのように機能するのか

ノード プールは、一連の仮想マシン (VM) で構成され、さまざまな種類のワークロードをサポートするために異なる仮想マシン サイズが指定されます。 これらの仮想マシン サイズは、SKU と呼ばれ、特定の目的に合わせて最適化されたさまざまなファミリに分類されます。 詳細については、VM の SKU に関するページを参照してください。 仮想マシン ノード プールを使用すると、マルチ SKU 手動スケーリングまたは単一 SKU 自動スケーリングを実行できます。

複数の仮想マシン サイズのスケーリングを有効にするために、仮想マシン ノード プールの種類では、ノード プールをスケーリングする方法、特に仮想マシンのサイズの目的の一覧と各サイズの数を示す構成を含む ScaleProfile が使用されます。 ManualScaleProfileは、1 つの目的の仮想マシン サイズと、ノード プール内のその種類の合計数を指定するスケール プロファイルです。 ManualScaleProfile では、1 つの仮想マシン サイズのみが許可されます。 ノード プール内の仮想マシン サイズごとに個別の ManualScaleProfile を作成する必要があります。 新しい Virtual Machines ノード プールを作成する場合は、 vm-size フィールドを使用し、 node-countを含めて、仮想マシン サイズの初期手動スケール プロファイルを追加します。 手動スケール プロファイルを追加する手順に従って、 手動スケール プロファイルをさらに追加することもできます。

仮想マシン ノード プールでは、 Auto モードも使用できます。つまり、ノード プールは クラスター オートスケーラーを使用できます。 Auto モードの仮想マシン ノード プールでは、一度に 1 つの仮想マシン サイズのみを使用できます。

新しい Virtual Machines ノード プールを作成する場合は、複数のスケール プロファイルを使用できます。ノード プールには少なくとも 1 つの手動スケール プロファイルが必要です。 仮想マシン ノード プールでクラスター オートスケーラーを有効にする場合は、ノード プールがスケーリング アクションに使用する 1 つのスケール プロファイルを除くすべてのスケール プロファイルを削除する必要があります。

利点

Virtual Machines ノード プールの種類の利点は次のとおりです。

  • 柔軟性: ノードの仕様を更新して、現在のワークロードとニーズに合わせて調整できます。
  • 微調整されたコントロール: 単一のノード レベルのコントロールを使用すると、異なる仕様のノードを指定および混合して、1 つのモデルから制限を解除し、一貫性を向上させることができます。
  • 効率性: クラスターのノード占有領域を減らし、運用要件を簡素化できます。

Virtual Machines ノード プールは、動的ワークロードと高可用性の要件に対してより優れたエクスペリエンスを提供します。 Virtual Machines ノード プールを使用すると、1 つのノード プールに複数の類似ファミリ仮想マシンを設定できます。 ワークロードは、構成した使用可能なリソースに対して自動的にスケジュールされます。

機能の比較

次の表では、Virtual Machines ノード プールと標準の Scale Set ノード プールの比較を示します。

ノード プールの種類 機能
仮想マシン ノードプール ノード プール内のノードを追加、削除、または更新できます。 仮想マシンの種類は、同じファミリ タイプ (D シリーズ、A シリーズなど) の任意の仮想マシンにすることができます。 仮想マシン ノード プールでは、複数 SKU の手動スケーリングも可能です。
Virtual Machine Scale Set を基にしたノードプール ノード プール内の同じサイズと種類のノードを追加または削除できます。 クラスターに新しい仮想マシン サイズを追加する場合は、新しいノード プールを作成する必要があります。

AKS でどのコンピューティング スケーリング エクスペリエンスを選択する必要がありますか?

ワークロードのニーズに応じて、複数のコンピューティング スケーリング エクスペリエンスを考慮する必要があります。 それぞれのユース ケースを参照してください。

  • ノードの自動プロビジョニング: マルチ SKU 自動スケーリングに最適 = 仮想マシン ノード プール: 複数 SKU の手動スケーリングに最適であり、単一 SKU の自動スケーリングをサポートします。
  • 仮想マシン スケール セット: 1 つの SKU 手動スケーリングと 1 つの SKU 自動スケールがサポートされます。

制限事項

  • プールで指定する VM サイズは、同じ種類である必要があります。 たとえば、GPU と非 GPU または x86 および ARM64 仮想マシンを同じノード プールに含めることはできません。
  • InifiniBand は使用できません。
  • ノード プール スナップショットはサポートされていません。
  • ノード プールで選択されているすべての VM サイズは、同様の仮想マシン ファミリである必要があります。 たとえば、N シリーズの仮想マシンの種類と、同じノード プール内の D シリーズの仮想マシンの種類を混在させることはできません。
  • Virtual Machines ノード プールでは、ノード プールごとに最大 5 つの異なる仮想マシン サイズを使用できます。
  • クラスター オートスケーラーを使用する場合、許可されるスケール プロファイルは 1 つだけです。 複数のスケール プロファイルを持つ仮想マシン ノード プールでクラスター オートスケーラーを有効にするには、1 つのスケール プロファイルを除くすべてを削除します。

前提条件

  • Azure サブスクリプション。 アカウントがない場合は、無料アカウントを作成することができます。
  • Azure CLI バージョン 2.73.0 以降がインストールおよび構成されています。 バージョンを確認するには、az --version を実行します。 Azure CLI のインストールまたはアップグレードの詳細については、「Azure CLI のインストール」を参照してください。
  • この機能には、kubernetes バージョン 1.27 以上が必要です。 Kubernetes のバージョンをアップグレードするには、「AKS クラスターのアップグレード」を参照してください

Important

カスタム仮想ネットワークの要件: 仮想マシン ノード プールをカスタム仮想ネットワークにデプロイする場合、クラスターでは、ターゲット サブネットに対する少なくともネットワーク共同作成者のアクセス許可を持つユーザー割り当てマネージド ID を使用する必要があります。 仮想マシン スケール セット ノード プールとは異なり、Virtual Machines ノード プールは、サブネットの結合操作にクラスター ID のみに依存し、ファースト パーティ トークンは使用しません。 システム割り当てマネージド ID を使用するクラスターは、カスタム仮想ネットワーク上で Virtual Machines ノード プールを作成または更新するときにプレフライト検証に失敗し、 InvalidParameter エラーが返されます。 クラスターのユーザー割り当てマネージド ID の構成の詳細については、「 AKS でのマネージド ID の使用」を参照してください。

Virtual Machines ノード プールを使用して AKS クラスターを作成する

スケール プロファイルでは 1 つの VM サイズのみが許可され、Virtual Machines ノード プール全体で最大 5 個の VM スケール プロファイルに制限されます。

az aks create フラグが --vm-set-type に設定された "VirtualMachines" コマンドを使用して、Virtual Machines ノード プールを持つ AKS クラスターを作成します。

次の例では、2 つのノードを含む Virtual Machines ノード プールを含む myAKSCluster という名前のクラスターを作成し、SSH キーを生成し、ロード バランサー SKU を Standard に設定し、Kubernetes バージョンを 1.31.0 に設定します。

az aks create \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --vm-set-type "VirtualMachines" \
    --vm-sizes "Standard_D4s_v3"
    --node-count 2 \
    --kubernetes-version 1.31.0

カスタム仮想ネットワークに仮想マシン ノード プールを含む AKS クラスターを作成する

仮想マシン ノード プールをカスタム仮想ネットワークにデプロイする場合は、クラスターを作成する前に、ユーザー割り当てマネージド ID を作成し、仮想ネットワークに対するネットワーク共同作成者のアクセス許可を付与する必要があります。

  1. 仮想ネットワークとサブネットを作成します。

    az network vnet create \
        --resource-group myResourceGroup \
        --name myVnet \
        --address-prefixes 10.1.0.0/16 \
        --subnet-name mySubnet \
        --subnet-prefix 10.1.0.0/24
    
  2. サブネット リソース ID を取得します。

    SUBNET_ID=$(az network vnet subnet show \
        --resource-group myResourceGroup \
        --vnet-name myVnet \
        --name mySubnet \
        --query id \
        --output tsv)
    
  3. ユーザー割り当てマネージド ID を作成します。

    az identity create \
        --name myAKSIdentity \
        --resource-group myResourceGroup
    
  4. マネージド ID のプリンシパル ID とリソース ID を取得します。

    IDENTITY_PRINCIPAL_ID=$(az identity show \
        --name myAKSIdentity \
        --resource-group myResourceGroup \
        --query principalId \
        --output tsv)
    
    IDENTITY_RESOURCE_ID=$(az identity show \
        --name myAKSIdentity \
        --resource-group myResourceGroup \
        --query id \
        --output tsv)
    
  5. ネットワーク共同作成者ロールを仮想ネットワーク上のマネージド ID に割り当てます。

    VNET_ID=$(az network vnet show \
        --resource-group myResourceGroup \
        --name myVnet \
        --query id \
        --output tsv)
    
    az role assignment create \
        --assignee $IDENTITY_PRINCIPAL_ID \
        --role "Network Contributor" \
        --scope $VNET_ID
    

    クラスターのマネージド ID に付与されたアクセス許可を伝達するには、最大 60 分かかる場合があります。 状態を確認するには、次のコマンドを使用します。

  6. カスタム仮想ネットワークに仮想マシン ノード プールを含む AKS クラスターを作成します。

    az aks create \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --vm-set-type "VirtualMachines" \
        --vm-sizes "Standard_D4s_v3" \
        --node-count 2 \
        --vnet-subnet-id $SUBNET_ID \
        --assign-identity $IDENTITY_RESOURCE_ID
    

Windows が有効なクラスターと Windows 仮想マシン ノード プールを作成する

仮想マシン ノード プールは、Windows 対応クラスターで使用できます。 次の例では、仮想マシン ノード プールを使用して myAKSCluster という名前のクラスターを作成します。 これらの手順では、最初に Linux システム プールを作成します。

  1. クラスターの Windows Server ノードの管理者資格情報として使用するユーザー名を作成します。 次のコマンドは、ユーザー名の入力を求め、後のコマンドで使用するために WINDOWS_USERNAME に設定します。

    echo "Please enter the username to use as administrator credentials for Windows Server nodes on your cluster: " && read WINDOWS_USERNAME
    
  2. 前の手順で作成した管理者ユーザー名のパスワードを作成します。 パスワードは 14 文字以上で、 Windows Server パスワードの複雑さの要件を満たしている必要があります。

    echo "Please enter the password to use as administrator credentials for Windows Server nodes on your cluster: " && read WINDOWS_PASSWORD
    
  3. az aks create フラグが --vm-set-type に設定された "VirtualMachines" コマンドを使用して、Windows が有効で仮想マシンタイプのノード プールを持つ AKS クラスターを作成します。

    az aks create \
       --resource-group myResourceGroup \
       --name myAKSCluster \
       --node-count 2 \
       --enable-addons monitoring \
       --generate-ssh-keys \
       --windows-admin-username $WINDOWS_USERNAME \
       --windows-admin-password $WINDOWS_PASSWORD \
       --vm-set-type "VirtualMachines" \
       --network-plugin azure
    
  4. az aks nodepool add フラグを --vm-set-type に設定した "VirtualMachines" コマンドを使用して、既存の Windows 対応クラスターに仮想マシン ノード プールを追加します。 次の例では、 npwin という名前の仮想マシン ノード プールを myAKSCluster クラスターに追加します。

    az aks nodepool add
       --resource-group myResourceGroup \
       --cluster-name myAKSCluster \
       --os-type Windows \
       --name npwin \
       --vm-sizes "Standard_D2s_V3" \
       --node-count 1
       --vm-set-type "VirtualMachines"
    

Virtual Machines ノード プールを既存のクラスターに追加する

az aks nodepool add フラグが --vm-set-type に設定された "VirtualMachines" コマンドを使用して、Virtual Machines ノード プールを既存のクラスターに追加します。

次の例では、myvmpool という名前の Virtual Machines ノード プールを myAKSCluster クラスターに追加します。 ノード プールでは、 --vm-sizesStandard_D4s_v3 に設定され、 --node-count が 3 に設定された ManualScaleProfile が作成されます。

az aks nodepool add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name myvmpool \
    --vm-set-type "VirtualMachines" \
    --vm-sizes "Standard_D4s_v3" \
    --node-count 3

手動スケール プロファイルをノード プールに追加する

az aks nodepool manual-scale add フラグが --vm-sizes に設定され、"Standard_D2s_v3"が 2 に設定されたnode-countを使用して、手動スケール プロファイルをノード プールに追加します。

次の例では、クラスター myAKSCluster のノード プール myvmpool に手動スケール プロファイルを追加します。 ノード プールには、VM SKU "Standard_D2s_v3" を持つ 2 つのノードが含まれています。

az aks nodepool manual-scale add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name myvmpool \
    --vm-sizes "Standard_D2s_v3" \
    --node-count 2

既存の手動スケール プロファイルを更新する

az aks nodepool manual-scale update フラグが --vm-sizes に設定された "Standard_D2s_v3" コマンドを使用して、ノード プールにある既存の手動スケール プロファイルを更新します。

--current-vm-sizes パラメーターを使用して、更新する既存のノード プールのサイズを指定します。 --vm-sizes または --node-count、あるいは両方を更新できます。 その他のツールまたは REST API を使用する場合は、ノード プール スケール プロファイルを更新するときに、完全な agentPoolProfiles.virtualMachinesProfile.scale フィールドを渡す必要があります。

次の例では、手動スケール プロファイルを、myAKSCluster クラスターの myvmpool ノード プールに更新します。 このコマンドはノードの数を 5 に更新し、VM SKU を Standard_D4s_v3 から Standard_D8s_v3 に変更します。

az aks nodepool manual-scale update \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name myvmpool \
    --current-vm-sizes "Standard_D4s_v3" \
    --vm-sizes "Standard_D8s_v3" \
    --node-count 5

手動スケール プロファイルを削除する

az aks nodepool manual-scale delete コマンドを使用して、既存の手動スケール プロファイルを削除します。

--current-vm-sizes パラメーターは、削除する既存のノード プールのサイズを指定します。 他のツールまたは REST API を使用してノード プール スケール プロファイルを更新する場合は、完全な agentPoolProfiles.virtualMachinesProfile.scale フィールドを渡します。

次の例では、Standard_D8s_v3 ノード プール内の VM SKU の手動スケール プロファイルを削除します。

az aks nodepool manual-scale delete \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name myvmpool \
    --current-vm-sizes "Standard_D8s_v3"

仮想マシン ノード プールを使用したクラスター オートスケーラー (プレビュー)

Virtual Machines ノード プールは 、クラスター オートスケーラーをサポートします。 これは、クラスターの作成時、新しいノード プールの追加中、または既存の手動ノード プールの更新時に、フラグ --enable-cluster-autoscaler を使用して有効にすることができます。

仮想マシン ノード プールでクラスター オートスケーラーを使用する場合は、

  • スケールアップ: オートスケーラーは保留中のポッドの負荷に応答し、そのノード プール内の同じ種類の単一 SKU を持つノード プールのノード数をスケールアップします。
  • スケールダウン: 特定のノードは、ノードの使用率に基づいて自動スケーラーによって選択されます。 scale-down-utilization-thresholdを構成して、クラスター自動スケールによるスケーリングアクションがトリガーされるタイミングを調整できます。 自動スケールの構成の詳細については、 クラスターオートスケーラーのドキュメント を参照してください。

制限事項

  • この機能は、パブリック クラウドでのみ使用できます。
  • GPU ノードは現在サポートされていません。

必要条件

  • 仮想マシン ノード プールでクラスター オートスケーラーを有効にするには、ノード プールで 1 つの VM サイズのみを使用する必要があります。 クラスター オートスケーラーを有効にする前に、他のすべての手動スケール プロファイルを削除する必要があります。

aks-preview 拡張機能をインストールする

Important

AKS のプレビュー機能は、セルフサービスのオプトイン単位で利用できます。 プレビューは、"現状有姿のまま" および "利用可能な限度" で提供され、サービス レベル アグリーメントおよび限定保証から除外されるものとします。 AKS プレビューは、ベストエフォート ベースでカスタマー サポートによって部分的にカバーされます。 そのため、これらの機能は運用環境での使用を目的としていません。 詳細については、次のサポート記事を参照してください。

    # Install the aks-preview extension
    az extension add --name aks-preview
    
    # Update the aks-preview extension
    az extension update --name aks-preview

機能フラグを登録する

VMsAgentAutoscalePreview コマンドを使用して、プレビュー機能フラグaz feature registerを登録します。

    az feature register --namespace Microsoft.ContainerService --name VMsAgentPoolAutoscalePreview

Virtual Machines ノード プールとクラスター オートスケーラーを有効にして AKS クラスターを作成する

  • az aks create フラグが --vm-set-type に設定され、フラグが"VirtualMachines"された --enable-cluster-autoscaler コマンドを使用して、Virtual Machines ノード プールを含む AKS クラスターを作成します。

次の例では、仮想マシン ノード プールを持つクラスターmyAKSClusterを作成します。このノードプールのサイズは"Standard_D4s_v3"で、ノード数の最小は2、最大は5です。また、Kubernetes バージョンを1.32.5に設定します。

az aks create \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --vm-set-type "VirtualMachines" \
    --node-vm-size "Standard_D4s_v3" 
    --min-count 2 \
    --max-count 5 \
    --kubernetes-version 1.32.5

クラスター オートスケーラーが有効になっている仮想マシン ノード プールを既存のクラスターに追加する

  • az aks nodepool add フラグが --vm-set-type に設定され、フラグが"VirtualMachines"された --enable-cluster-autoscaler コマンドを使用して、Virtual Machines ノード プールを作成します。

次の例では、仮想マシン のサイズ "Standard_D4s_v3" を使用して、クラスター オートスケーラーが有効になっている仮想マシン ノード プール myvmpoolmyAKSCluster という名前のクラスターに追加し、最小ノード数は 2、最大数は 5 に追加します。

az aks nodepool add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name myvmpool \
    --vm-set-type "VirtualMachines" \
    --node-vm-size "Standard_D4s_v3" \
    --enable-cluster-autoscaler
    --min-count 2 \
    --max-count 5 \

クラスター オートスケーラーが有効になっている仮想マシン ノード プールのクラスター オートスケーラー設定を更新する

次の例では、"Standard_D4s_v3" の仮想マシン サイズを使用して、myAKSCluster という名前のクラスター内の Virtual Machines ノード プール myvmpool の設定を更新します。

az aks nodepool update \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name myvmpool \
    --update-cluster-autoscaler \
    --node-vm-size "Standard_D4s_v3" \
    --min-count 2 \
    --max-count 5

仮想マシン ノード プールを手動モードからクラスター オートスケーラーに更新する

手動モードの仮想マシン ノード プールを自動に更新できるのは、ノード プールに手動スケール プロファイルが 1 つしかない場合のみです。

仮想マシン ノード プールに複数の手動スケール プロファイルがある場合は、自動スケールの目的で選択したサイズを除き、すべての手動スケール プロファイルを削除する必要があります。 VM サイズ Standard_D8s_v3のノード プール "myvmpool" の手動スケール プロファイルを削除する次の例を参照してください。

az aks nodepool manual-scale delete \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name myvmpool \
    --current-vm-sizes "Standard_D8s_v3"

次の例では、myAKSCluster という名前のクラスター内の Virtual Machines ノード プール myvmpoolManual モードからAuto モードに更新します。

az aks nodepool update \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name myvmpool \
    --enable-cluster-autoscaler \
    --min-count 2 \
    --max-count 5

Virtual Machines ノード プールでクラスター オートスケーラーを無効にする

クラスター オートスケーラーを無効にするか、クラスターを Auto モードから Manual モードに変更できます。

次の例では、myAKSCluster という名前のクラスター内の VIrtual Machines ノード プール myvmpoolManual モードから Auto モードに更新します。

az aks nodepool update \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name myvmpool \
    --disable-cluster-autoscaler

次のステップ

この記事では、AKS で Virtual Machines ノード プールを使用する方法について説明しました。 AKS のノード プールの詳細については、ノード プールの作成に関するページを参照してください。