次の方法で共有


Azure Kubernetes Service (AKS) のクラスターでノード プールを作成する

この記事では、AKS クラスターで 1 つ以上のノード プールを作成する方法について説明します。

この機能により、複数のノード プールの作成と管理をより詳細に制御できるようになり、作成/更新/削除 (CRUD) 操作に個別のコマンドが必要になります。 以前は、az aks create または az aks update を介したクラスター操作は、managedCluster API を使用するものであり、コントロール プレーンと単一ノード プールを変更する唯一の方法でした。 この機能は、agentPool API を介した、エージェント プールに対する個別の操作セットを公開するものであり、個々のノード プールに対して操作を実行するには az aks nodepool コマンド セットを使用する必要があります。

重要

2025 年 11 月 30 日から、AKS は Azure Linux 2.0 のセキュリティ更新プログラムをサポートしたり提供したりしなくなります。 2026 年 3 月 31 日以降、ノード イメージは削除され、ノード プールをスケーリングできなくなります。 ノード プールをサポートされている Kubernetes バージョンにアップグレードするか、osSku AzureLinux3に移行して、サポートされている Azure Linux バージョンに移行します。 詳細については、「 廃止: AKS での Azure Linux 2.0 ノード プール」を参照してください。

[前提条件]

  • Azure CLI バージョン 2.2.0 以降がインストールおよび構成されている必要があります。 バージョンを確認するには、az --version を実行します。 インストールまたはアップグレードする必要がある場合は、Azure CLI のインストールに関するページを参照してください。
  • ARM テンプレートをデプロイするには、デプロイするリソースに対する書き込みアクセス権と、 Microsoft.Resources/deployments リソースの種類に対するすべての操作へのアクセス権が必要です。 たとえば、仮想マシン (VM) をデプロイするには、 Microsoft.Compute/virtualMachines/writeMicrosoft.Resources/deployments/* のアクセス許可が必要です。 ロールとアクセス許可の一覧については、Azure の組み込みロールに関するページを参照してください。

  • 各パラメーターの次の要件を確認します。

    • osTYPE: オペレーティング システムの種類。 既定値は Linux です。
    • osSKU: エージェント プールで使用される OS SKU を指定します。
    • count: Docker コンテナーをホストするエージェント (VM) の数。 使用できる値は、ユーザー プールの場合は 0 から 1000 (両端を含む) の範囲、システム プールの場合は 1 から 1000 (両端を含む) の範囲である必要があります。 既定値は 1 です。
  • ARM テンプレートを使用してクラスターをデプロイした後、Azure CLI または Azure PowerShell を使用してクラスターに接続し、サンプル アプリケーションをデプロイできます。

制限事項

複数のノード プールをサポートする AKS クラスターを作成する場合には、次の制限があります。

  • AKS クラスター内に代わりになる別のシステム ノード プールがある場合、システム ノード プールを削除できます。 それ以外の場合は、システム ノード プールを削除できません。

  • システム プールには、少なくとも 1 つのノードが含まれている必要があります。 ユーザー ノード プールには、0 個以上のノードを含めることができます。

  • 単一ノード プールを使用してクラスターを作成する場合、OS の種類はLinuxする必要があります。 OS SKU には、 UbuntuAzureLinuxなどの任意の Linux バリエーションを使用できます。 単一の Windows ノード プールを持つクラスターを作成することはできません。 Windows コンテナーを実行する場合は、Linux システム ノード プールを 使用して作成した後、クラスターに Windows ノード プールを追加する必要があります。

  • 複数ノード プールする場合、AKS クラスターは Standard SKU ロード バランサーを使用する必要があります。 この機能は、Basic SKU ロード バランサーではサポートされていません。

  • AKS クラスターでは、ノードに仮想マシン スケール セットを使用する必要があります。

  • ノード プールの名前には小文字の英数字のみを使用でき、小文字で始まる必要があります。

    • Linux のノード プールの長さは、1 から 12 文字の範囲内である必要があります。
    • Windows のノード プールの長さは、1 から 6 文字の範囲内である必要があります。
  • すべてのノード プールは、同じ仮想ネットワーク内に存在する必要があります

  • クラスターの作成時に複数のノード プールを作成する場合は、ノード プールのすべての Kubernetes のバージョンが、コントロール プレーンに設定されたバージョンと一致している必要があります。

環境変数の設定

  • シェルで次の環境変数を設定して、この記事のコマンドを簡略化します。 値は、任意の名前に変更できます。

    export RESOURCE_GROUP_NAME="my-aks-rg"
    export LOCATION="eastus"
    export CLUSTER_NAME="my-aks-cluster"
    export NODE_POOL_NAME="mynodepool"
    

リソース グループを作成する

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

    az group create --name $RESOURCE_GROUP_NAME --___location $LOCATION
    

Azure CLI を使用して単一ノード プールを持つ AKS クラスターを作成する

AKS クラスターにノード プールが 1 つだけ必要な場合は、システム ノード プールでアプリケーション ポッドをスケジュールできます。 運用環境内のお使いの AKS クラスターで 1 つのシステム ノード プールを実行する場合、そのノード プールには少なくとも 3 つのノードを使用することをお勧めします。 1 つのノードがダウンすると、冗長性が損なわれます。 このリスクを軽減するには、システム ノード プール ノードを増やします。

  1. az aks create コマンドを使用して、単一の Ubuntu ノード プールを持つクラスターを作成します。 この手順では、単一ノード プール内の 2 つのノードを指定します。

    az aks create \
        --resource-group $RESOURCE_GROUP_NAME \
        --name $CLUSTER_NAME \
        --vm-set-type VirtualMachineScaleSets \
        --node-count 2 \
        --os-sku Ubuntu \
        --___location $LOCATION \
        --load-balancer-sku standard \
        --generate-ssh-keys
    

    クラスターの作成には数分かかります。

  2. クラスターの準備ができたら、az aks get-credentials コマンドを使用してクラスターの資格情報を取得します。

    az aks get-credentials --resource-group $RESOURCE_GROUP_NAME --name $CLUSTER_NAME
    

Azure CLI を使用して 2 番目のノード プールを追加する

前のセクションで作成したクラスターには、1 つのノード プールがあります。 このセクションでは、クラスターに 2 番目のノード プールを追加します。 この 2 つ目のノードプールには、Linux または Ubuntu の OS SKU を持つ AzureLinux を OS の種類として指定することも、Windows を OS の種類として指定することもできます。

エフェメラル OS ディスクを使用するノード プールを AKS クラスターに追加する場合は、--node-osdisk-type コマンドの実行時にEphemeral フラグをaz aks nodepool addに設定できます。

エフェメラル OS を使用すると、VM およびインスタンス イメージを、最大で VM キャッシュのサイズまでデプロイできます。 AKS の既定のノード OS ディスク構成では 128 GB が使われます。つまり、キャッシュが 128 GB より大きい VM サイズが必要になります。 既定の Standard_DS2_v2 のキャッシュ サイズは 86 GB で、十分な大きさではありません。 Standard_DS3_v2 VM SKU のキャッシュ サイズは 172 GB で、十分な大きさです。 --node-osdisk-sizeを使用して OS ディスクの既定のサイズを小さくすることもできますが、AKS イメージの最小サイズは 30 GB であることに注意してください。

ネットワーク接続 OS ディスクを使用してノード プールを作成する場合は、--node-osdisk-type コマンドの実行時にManaged フラグをaz aks nodepool addに設定できます。

Linux ノード プールを追加する

  • az aks nodepool add コマンドを使用して、新しいノード プールを作成します。 次の例では、Linuxノードを実行する Ubuntu OS SKU を使用して、 ノード プールを作成します。 OS SKU を指定しない場合、AKS は既定で Ubuntu に設定されます。

    az aks nodepool add \
        --resource-group $RESOURCE_GROUP_NAME \
        --cluster-name $CLUSTER_NAME \
        --name $NODE_POOL_NAME \
        --node-vm-size Standard_DS2_v2 \
        --os-type Linux \
        --os-sku Ubuntu \
        --node-count 3
    

    ノード プールの作成には数分かかります。

Windows Server ノード プールを追加する

  • az aks nodepool add コマンドを使用して、新しいノード プールを作成します。 次の例では、Windowsノードを実行する Windows2022 OS SKU を使用して、 ノード プールを作成します。

    Windows OS の詳細については、「 Windows のベスト プラクティス」を参照してください。

    az aks nodepool add \
        --resource-group $RESOURCE_GROUP_NAME \
        --cluster-name $CLUSTER_NAME \
        --name $NODE_POOL_NAME \
        --node-vm-size Standard_DS2_v2 \
        --os-type Windows \
        --os-sku Windows2022 \
        --node-count 3
    

ノード プールの状態を確認する

  • az aks nodepool list コマンドを使用し、お使いのリソース グループとクラスター名を指定して、ノード プールの状態を確認します。

    az aks nodepool list --resource-group $RESOURCE_GROUP_NAME --cluster-name $CLUSTER_NAME
    

ノード プールの削除

ノード プールが不要になったら、それを削除して、基になっている VM を削除します。

注意

ノード プールを削除しても、AKS では切断とドレインは実行されません。また、ノード プールを削除したときに実行できる、データ損失の回復オプションもありません。 他のノード プールでポッドをスケジュールできない場合、それらのアプリケーションは利用できなくなります。 使用中のアプリケーションにデータ バックアップがない場合や、お使いのクラスター内の他のノード プールで実行する機能がない場合は、ノード プールは削除しないでください。 削除するノード プールで現在実行されているポッドの再スケジュールの中断を最小限に抑えるために、削除する前にノード プール内のすべてのノードで cordon と drain を実行します。

  • az aks nodepool delete コマンドを使用し、ノード プール名を指定して、ノード プールを削除します。

    az aks nodepool delete --resource-group $RESOURCE_GROUP_NAME --cluster-name $CLUSTER_NAME --name $NODE_POOL_NAME --no-wait
    

    ノードおよびノード プールの削除には数分かかります。

ARM テンプレートを使用して単一ノード プールを持つ AKS クラスターを作成する

AKS クラスターにノード プールが 1 つだけ必要な場合は、システム ノード プールでアプリケーション ポッドをスケジュールできます。 運用環境内のお使いの AKS クラスターで 1 つのシステム ノード プールを実行する場合、そのノード プールには少なくとも 3 つのノードを使用することをお勧めします。 1 つのノードがダウンすると、冗長性が損なわれます。 このリスクを軽減するには、システム ノード プール ノードを増やします。

Microsoft.ContainerService/managedClusters リソースを作成する

  • Microsoft.ContainerService/managedClusters をテンプレートに追加して、 リソースを作成します。
  • ARM テンプレートに次の変更を加えて、AKS クラスターに単一の Ubuntu ノード プールを作成します。

      "properties": {
        "agentPoolProfiles": [
        {
            "count": "1",
            "osSKU": "ubuntu",
            "osType": "linux"
         } 
         ],
    }
    

ARM テンプレートを使用して 2 番目のノード プールを追加する

前のセクションで作成したクラスターには、1 つのノード プールがあります。 このセクションでは、クラスターに 2 番目のノード プールを追加します。 この 2 つ目のノードプールには、Linux または Ubuntu の OS SKU を持つ AzureLinux を OS の種類として指定することも、Windows を OS の種類として指定することもできます。

Linux ノード プールを追加する

  • ARM テンプレートに次の変更を加えて、AKS クラスターに複数の Ubuntu ノード プールを作成します。

      "properties": {
        "agentPoolProfiles": [
        {
            "count": "3",
            "osSKU": "ubuntu",
            "osType": "linux"
         } 
         ],
    }
    

Windows Server ノード プールの追加

  • ARM テンプレートに次の変更を加えて、AKS クラスターに複数の Windows ノード プールを作成します。

      "properties": {
        "agentPoolProfiles": [
        {
            "count": "3",
            "osSKU": "windows2022",
            "osType": "windows"
         } 
         ],
    }
    

ARM テンプレートをデプロイする

次のステップ

この記事では、Azure CLI を使用して AKS クラスターにノード プールを作成する方法について説明しました。