自動スケーラー プロファイルを使用して、Azure Arc で有効になっている AKS でクラスターの自動スケーリングを構成する

適用対象: AKS on Azure Stack HCI 22H2、AKS on Windows Server

自動スケーラー プロファイル オブジェクトのパラメーターを使用して、Arc で有効になっている AKS のスケール イベントを定義できます。クラスター オートスケーラー プロファイルは、クラスター オートスケーラーを使用するすべてのノード プールに影響します。 ノード プールごとにオートスケーラー プロファイルを設定することはできません。 この記事では、オートスケーラーのしくみについて説明し、既定の自動スケーラー プロファイル値について説明し、プロファイル定義を構成して使用する方法について説明します。

プロファイルの使用

クラスター オートスケーラー プロファイルには、次の属性があります。

  • 自動スケーラー プロファイルは、クラスター内のすべてのノード プールに適用されます。
  • プロファイルは、グローバル展開レベルのオブジェクトです。
  • AKS Arc では、複数のプロファイルを使用できます。
  • 特定のクラスターに割り当てられるプロファイルは 1 つだけです。 そのプロファイルが、クラスター内のすべてのノード プールに使われます。
  • プロファイルに対する変更は、自動スケーラー機能が有効になっているすべてのノード プールに適用されます。

プロファイルの設定

既定のプロファイルは、以下の既定値で構成されます。 次の設定を更新できます。

設定 説明 既定値
min-node-count このプロファイルが割り当てられているノード プールがスケールダウンできる最小ノード数。 0
max-node-count このプロファイルが割り当てられているノード プールがスケールアップできる最大ノード数。 1
scan-interval スケールアップまたはスケールダウンに関してクラスターが再評価される頻度。 10 秒
scale-down-delay-after-add スケールアップ後に、スケールダウンの評価が再開されるまでの時間。 10 分
scale-down-delay-after-delete ノードの削除後に、スケールダウンの評価が再開されるまでの時間。 scan-interval
scale-down-delay-after-failure スケールダウンの失敗後に、スケールダウンの評価が再開されるまでの時間。 3 分
scale-down-unneeded-time ノードが不要になってからスケールダウンの対象になるまでの時間。 10 分
scale-down-unready-time 準備ができていないノードが不要になってからスケールダウンの対象になるまでの時間。 20 分
scale-down-utilization-threshold 要求されたリソースの合計を容量で割った値として定義される、ノード利用レベル。これを下回るノードはスケールダウンの対象と見なすことができます。 0.5
max-graceful-termination-sec ノードのスケールダウンを試みるときに、クラスター オートスケーラーがポッドの終了を待機する最大秒数。 600 秒
balance-similar-node-groups 類似のノード プールを検出し、その間でノード数のバランスを取ります。 false
expander スケールアップで使用するノード プール expander の種類 使用できる値: most-pods、random、least-waste、priority。 random
skip-nodes-with-local-storage true の場合、EmptyDir や HostPath などのローカル ストレージを備えたポッドがあるノードは、クラスター自動スケーラーによって削除されなくなります。 true
skip-nodes-with-system-pods true の場合、ポッドのあるノードは、クラスター自動スケーラーによって kube-system から削除されなくなります (DaemonSet またはミラー ポッドを除く)。 true
max-empty-bulk-delete 同時に削除できる空ノードの最大数。 10 ノード
new-pod-scale-up-delay バーストまたはバッチ スケールのように、Kubernetes スケジューラによってすべてのポッドがスケジュールされる前に CA を動作させたくないシナリオの場合、一定の期間に達する前のスケジュールされていないポッドを無視するように CA に指示できます。 0 秒
max-total-unready-percentage クラスター内の準備が完了していないノードの最大割合。 この割合を超えると、CA の動作は停止されます。 45%
max-node-provision-time 自動スケーラーがノードがプロビジョニングされるのを待機する最大時間。 約 15 分

自動スケーラーの構成に関する注意事項

クラスター オートスケーラー プロファイルの設定は 、Set-AksHciAutoScalerConfig PowerShell コマンドレットを使用して変更できます。

クラスター自動スケーラーでは、各ノード プールに設定された最小数と最大数に基づいてスケーリングが決定されますが、最小数または最大数が更新された後にそれが適用されません。 たとえば、現在のノード数が 3 の場合に最小カウントを 5 に設定しても、プールはすぐに 5 までスケーリングされません。

ノード プールの最小数の値が現在のノード数より大きい場合は、2 つの新しい追加ノードを必要とし、自動スケーラー イベントをトリガーする十分なスケジュール不可能なポッドが存在する場合、新しい最小または最大の設定が考慮されます。 スケール イベントの後、新しい数の制限が適用されます。

クラスター全体のオートスケーラー プロファイルで既定値を変更することで、クラスター オートスケーラーの詳細をよりきめ細かに構成することもできます。 たとえば、スケール ダウン イベントは、ノードの使用率が 10 分間不足した後に発生します。 15 分ごとに実行されるワークロードがある場合は、15 分または 20 分経過後に使用率が低いノードをスケールダウンするようにオートスケーラー プロファイルを変更できます。 クラスター オートスケーラーを有効にすると、異なる設定を指定しない限り既定のプロファイルが使用されます。

自動スケーラー プロファイルを保存して読み込む

自動スケーラー プロファイルは、YAML ファイルとしてプロファイル定義に保存して格納できます。 テキスト エディターから YAML ファイルを手動で編集し、保存された定義を読み込むことができます。

プロファイルの定義を保存する

プロファイルのコピーを YAML ファイルとして保存するには、 を使用します kvactl。 プロファイルを定義したら、次のコマンドを実行します。

kvactl.exe autoscalerprofile get --name default --kubeconfig (Get-AksHciConfig).Kva.kubeconfig --outputformat=yaml > def.yaml

プロファイルの定義を編集する

プロファイル定義は YAML ファイルで編集できます。 たとえば、メモ帳、Visual Studio Code、またはその他のテキスト エディターで def.yaml を開くことができます。

プロファイルの定義を読み込む

保存した YAML ファイルから を使用して kvactl プロファイル定義を読み込むことができます。 次のコマンドを実行します。

kvactl.exe autoscalerprofile create --profileconfig .\def-new.yaml --kubeconfig (Get-AksHciConfig).Kva.kubeconfig

次のステップ