この記事では、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/writeとMicrosoft.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 には、UbuntuやAzureLinuxなどの任意の 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 つのノードがダウンすると、冗長性が損なわれます。 このリスクを軽減するには、システム ノード プール ノードを増やします。
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クラスターの作成には数分かかります。
クラスターの準備ができたら、
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ノードを実行するUbuntuOS 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ノードを実行するWindows2022OS 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 リソースを作成する
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 テンプレートをデプロイする
- ARM テンプレートを 使用した Azure Kubernetes Service (AKS) クラスターのデプロイに関するページのガイダンスに従って、ARM テンプレートをデプロイします。
次のステップ
この記事では、Azure CLI を使用して AKS クラスターにノード プールを作成する方法について説明しました。
- 複数のノード プールを管理する方法については、 AKS クラスターの複数のノード プールの管理に関するページを参照してください。
- さまざまな種類のノード プールを作成する方法については、次の記事を参照してください。
- Azure スポット ノード プールを AKS クラスターに追加する
- 仮想マシン ノード プールを AKS クラスターに追加する
- AKS クラスターに専用システム ノード プールを追加する
- AKS ノード プールで Federal Information Processing Standards (FIPS) を有効にしました
- AKS クラスターに機密仮想マシン (CVM) を含むノード プールを追加する
- AKS で一意のサブネットを持つノード プールを作成する
- 第 2 世代 VM ノード プールを AKS クラスターに追加する
- アーティファクト ストリーミングを含むノード プールを AKS クラスターに追加する
-
containerdを含む Windows Server ノード プールを AKS クラスターに追加する
Azure Kubernetes Service