適用対象: 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-pods 、random 、least-waste 、priority です。 |
|
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 クラスター ノード プールの管理に関するを参照してください。