Azure Kubernetes Service (AKS) クラスターのノードの数を手動でスケーリングする

アプリケーションのリソースニーズが変化した場合、CPU、メモリ、PID 領域、またはディスク サイズの容量が少ないために、クラスターのパフォーマンスが影響を受ける可能性があります。 これらの変化に対処するために、AKS クラスターを手動でスケーリングして、実行するノードの数を変えることができます。 スケール ダウンするときには、実行中のアプリケーションの中断を最小限に抑えるために、ノードは慎重に切断およびドレインされます。 スケールアップすると、AKS では、ノードが Kubernetes クラスターによって [準備完了] とマークされるまで待機してから、それらに対してポッドがスケジュール化されます。

この記事では、AKS クラスターのノードの数を手動で増減する方法について説明します。

開始する前に

  • AKS サービスのクォータと制限に関する記事を参照して、希望するノード数までクラスターをスケーリングできることを確認します。

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

    • Linux のノード プールの長さは、1 から 11 文字の範囲内である必要があります。
    • Windows のノード プールの長さは、1 から 6 文字の範囲内である必要があります。

クラスター ノードのスケーリング

重要

kubectl コマンドを使用したノード プールからのノードの削除はサポートされていません。 これを行うと、AKS クラスターでスケーリングに関する問題が発生する可能性があります。

  1. az aks show コマンドを使用してノード プールの "名前" を取得します。 次の例では、myResourceGroup リソース グループ内の myAKSCluster という名前のクラスターのノード プール名を取得します。

    az aks show --resource-group myResourceGroup --name myAKSCluster --query agentPoolProfiles
    

    次の出力例は、namenodepool1 であることを示しています。

    [
      {
        "count": 1,
        "maxPods": 110,
        "name": "nodepool1",
        "osDiskSizeGb": 30,
        "osType": "Linux",
        "vmSize": "Standard_DS2_v2"
      }
    ]
    
  2. 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",
          "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 ノード プールをゼロ ノードに自動スケーリングすることもできます。

次のステップ

この記事では、AKS クラスターを手動でスケールしてノード数を増減しました。 クラスターの自動スケーラーを使用してクラスターを自動的にスケーリングすることもできます。