次の方法で共有


AKS Arc クラスターでクラスター オートスケーラーを使用する

適用対象: AKS on Azure Local

Kubernetes でのアプリケーションの需要に対応するには、ワークロードを実行するノードの数を調整することが必要になる場合があります。 クラスター オートスケーラー コンポーネントは、リソース制約のためにスケジュールできないクラスター内のポッドを監視します。 クラスター オートスケーラーは、問題を検出すると、アプリケーションの需要に合わせてノード プール内のノード数をスケールアップします。 また、実行ポッドの不足について定期的にノードがチェックされ、必要に応じてノードの数がスケールダウンされます。 この記事では、AKS Arc でクラスター オートスケーラーを有効にして管理する方法について説明します。

Azure ローカル クラスターで自動スケールを有効にする前に、 AKS on Azure Local のスケール要件 を確認して、環境が必要な制限を満たしていることを確認します。

新しいクラスターでクラスター オートスケーラーを有効にする

az aksarc create コマンドを使用して AKS Arc クラスターを作成し、--enable-cluster-autoscaler パラメーターを使用してクラスターのノード プールでクラスター オートスケーラーを有効にして構成し、ノードの--min-count--max-countを指定します。 次のコマンド例では、1 つのノードでクラスターを作成し、クラスター オートスケーラーを有効にして、1 つ以上のノードと最大 3 つのノードを設定します。

az aksarc create \
--resource-group myResourceGroup \
--name my-aks-arc-cluster \
--custom-location $customLocationId 
--vnet-ids $vnetId
--generate-ssh-keys
--aad-admin-group-object-ids $entraIds
--node-count 1 \
--enable-cluster-autoscaler \
--min-count 1 \
--max-count 3

このクラスターを作成して、クラスター オートスケーラーの設定を構成するには数分かかります。

既存のクラスター上でクラスター自動スケーラーを有効にする

az aksarc update コマンドを使用して既存のクラスターを更新し、--enable-cluster-autoscaler パラメーターを使用してクラスター オートスケーラーを有効にして構成し、ノードの--min-count--max-countを指定します。 次のコマンド例では、既存の AKS Arc クラスターを更新してクラスター上でクラスター オートスケーラーを有効にし、1 つ以上のノードと最大 3 つのノードを設定します。

az aksarc update \
  --resource-group myResourceGroup \
  --name my-aks-arc-cluster \
  --enable-cluster-autoscaler \
  --min-count 1 \
  --max-count 3

このクラスターを更新してクラスター オートスケーラーの設定を構成するには、数分かかります。

クラスターでクラスター オートスケーラーを無効にする

az aksarc update コマンドと --disable-cluster-autoscaler パラメーターを使用して、クラスター オートスケーラーを無効にします。

az aksarc update \
  --resource-group myResourceGroup \
  --name my-aks-arc-cluster \
  --disable-cluster-autoscaler

クラスター オートスケーラーが無効になってもノードは削除されません。

クラスター オートスケーラーの設定を更新する

アプリケーション需要の変化に応じて、効率的にスケーリングするためにクラスター オートスケーラーのノード数を調整する必要がある場合があります。 az aksarc update コマンドを使用してノード数を変更し、--update-cluster-autoscaler パラメーターを使用してクラスター オートスケーラーを更新し、ノードの更新された--min-count--max-countを指定します。

az aksarc update \
  --resource-group myResourceGroup \
  --name myAKSCluster \
  --update-cluster-autoscaler \
  --min-count 1 \
  --max-count 5

クラスター オートスケーラー プロファイルを使用する

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

クラスター オートスケーラー プロファイルの設定

次の表に、クラスター オートスケーラー プロファイルで使用可能な設定を示します。

設定 説明 規定値
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 ノード プールの種類 エキスパンダー はスケールアップで使用されます。 指定できる値は、most-podsrandomleast-wastepriority です。
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 分

新しいクラスターに対してクラスター オートスケーラー プロファイルを設定する

az aksarc create コマンドを使用して AKS Arc クラスターを作成し、cluster-autoscaler-profile パラメーターを使用してクラスター オートスケーラー プロファイルを設定します。

az aksarc create \
  --resource-group myResourceGroup \
  --name my-aks-arc-cluster \
  --node-count 1 \
  --enable-cluster-autoscaler \
  --min-count 1 \
  --max-count 3 \
  --cluster-autoscaler-profile scan-interval=30s

既存のクラスターに対してクラスター オートスケーラー プロファイルを設定する

az aksarc update コマンドと cluster-autoscaler-profile パラメーターを使用して 、既存のクラスターにクラスター オートスケーラーを設定します。 次の例では、スキャン間隔の設定を "30 秒" として構成しています。

az aksarc update \
  --resource-group myResourceGroup \
  --name my-aks-arc-cluster \
  --cluster-autoscaler-profile scan-interval=30s

クラスター オートスケーラー プロファイルを既定値にリセットする

az aksarc update コマンドを使用してクラスター オートスケーラー プロファイルをリセットします。

az aksarc update \
  --resource-group myResourceGroup \
  --name my-aks-arc-cluster \
  --cluster-autoscaler-profile ""

自動スケーラーを効果的に使用する

クラスターとノード プールが自動的にスケーリングされるように構成されたので、必要に応じて、水平オートスケーラー機能を使用する方法でもスケーリングするようにワークロードを構成できます。

次のガイダンスは、Microsoft によって正式にサポートされていません。 これは、オープンソースのプラクティスに基づくベスト エフォートの推奨事項として共有されます。

ワークロードのスケーリングには、次の 2 つの方法があります。

  • Kubernetes Horizontal Pod Autoscaler: 負荷特性に基づいて、水平ポッド オートスケーラー ( horizontal autoscaler とも呼ばれます) は、アプリケーションデプロイのポッドを Kubernetes クラスター内の使用可能なノードにスケーリングします。 スケジュール可能なノードがこれ以上ない場合、水平オートスケーラーはポッドをスケジュールする新しいノードをインスタンス化します。 アプリケーションの負荷が下がると、ノードは再びスケールバックされます。 ポッドの水平オートスケーラーを機能させるには、メトリックス サーバー コンポーネントを AKS クラスターに手動でデプロイする必要があります。 ポッドの水平オートスケーラー ルールの詳細については、 Kubernetes 水平ポッド オートスケーラーに関するセクションを参照してください。
  • Kubernetes ノードのアンチアフィニティ ルール: Kubernetes デプロイのアンチアフィニティ ルールでは、一連のポッドを同じノードでスケーリングできないことを指定できます。また、ワークロードをスケーリングするには別のノードが必要です。 水平オートスケーラーは、負荷特性またはアプリケーション インスタンスのターゲット ポッドの数と組み合わせて、要求を満たすためにノード プール内の新しいノードをインスタンス化します。 アプリケーションの需要が減ると、水平オートスケーラーによってノード プールが再びスケールダウンされます。 Kubernetes ポッドアフィニティ ルールの詳細については、「 ノードへのポッドの割り当て」を参照してください。

次のステップ

この記事では、AKS Arc ノードの数を自動的にスケーリングする方法について説明しました。 ノード プールを手動でスケーリングするには、AKS Arc クラスター ノード プールの管理に関するを参照してください。