Azure Kubernetes Service (AKS) クラスターでノードの数をスケーリングする
アプリケーションのリソースニーズが変化した場合、CPU、メモリ、PID 領域、またはディスク サイズの容量が少ないために、クラスターのパフォーマンスが影響を受ける可能性があります。 これらの変化に対処するために、AKS クラスターを手動でスケーリングして、実行するノードの数を変えることができます。 スケール ダウンするときには、実行中のアプリケーションの中断を最小限に抑えるために、ノードは慎重に切断およびドレインされます。 スケールアップすると、AKS では、ノードが Kubernetes クラスターによって [準備完了] とマークされるまで待機してから、それらに対してポッドがスケジュール化されます。
クラスター ノードのスケーリング
Note
kubectl コマンドを使用したノード プールからのノードの削除はサポートされていません。 これを行うと、AKS クラスターでスケーリングに関する問題が発生する可能性があります。
最初に、az aks show コマンドを使用してノード プールの名前を取得します。 次の例では、myResourceGroup リソース グループ内の myAKSCluster という名前のクラスターのノード プール名を取得します。
az aks show --resource-group myResourceGroup --name myAKSCluster --query agentPoolProfiles
次の出力例は、name が nodepool1 であることを示しています。
[
{
"count": 1,
"maxPods": 110,
"name": "nodepool1",
"osDiskSizeGb": 30,
"osType": "Linux",
"storageProfile": "ManagedDisks",
"vmSize": "Standard_DS2_v2"
}
]
az aks scale コマンドを使用してクラスター ノードをスケーリングします。 次の例では、myAKSCluster という名前のクラスターを単一のノードにスケーリングします。 nodepool1 など、前のコマンドから返された独自の --nodepool-name
を指定します。
az aks scale --resource-group myResourceGroup --name myAKSCluster --node-count 1 --nodepool-name <your node pool name>
次の出力例は、agentPoolProfiles セクションに示されているように、クラスターが正常に 1 つのノードにスケーリングされたことを示しています。
{
"aadProfile": null,
"addonProfiles": null,
"agentPoolProfiles": [
{
"count": 1,
"maxPods": 110,
"name": "nodepool1",
"osDiskSizeGb": 30,
"osType": "Linux",
"storageProfile": "ManagedDisks",
"vmSize": "Standard_DS2_v2",
"vnetSubnetId": null
}
],
[...]
}
User
ノード プールを 0 にスケーリングする
常に実行中のノードを必要とする System
ノード プールとは異なり、User
ノード プールでは 0 にスケーリングできます。 システムとユーザー ノード プールの違いについては、「システムおよびユーザー ノード プール」を参照してください。
ユーザー プールを 0 にスケーリングするには、上記の az aks scale
コマンドの代わりに az aks nodepool scale を使用し、ノード数として 0 を設定します。
az aks nodepool scale --name <your node pool name> --cluster-name myAKSCluster --resource-group myResourceGroup --node-count 0
また、クラスター オートスケーラーの --min-count
パラメーターを 0 に設定することによって、User
ノード プールを 0 ノードに自動スケーリングすることもできます。
次の手順
この記事では、AKS クラスターを手動でスケールしてノード数を増減しました。 クラスターの自動スケーラーを使用してクラスターを自動的にスケーリングすることもできます。