Azure Kubernetes Service (AKS) でのポッドの垂直方向の自動スケーリング
この記事では、オープンソース バージョンの Kubernetes に基づく、Azure Kubernetes Service (AKS) の Vertical Pod Autoscaler (VPA) の概要について説明します。 構成すると、過去の使用状況に基づいて、ワークロードごとのコンテナーに対するリソース要求と制限が自動的に設定されます。 VPA は、他のポッドの CPU とメモリを解放し、AKS クラスターを効果的に利用するのに役立ちます。
ポッドの垂直方向の自動スケーリングは、時間の経過に伴って変化するリソースの使用量に関する推奨事項を提供します。 リソース使用量の急増を管理するには、必要に応じてポッド レプリカの数をスケーリングする Horizontal Pod Autoscaler を使用します。
メリット
Vertical Pod Autoscaler には、次の利点があります。
アプリケーションの "適切なサイズ" に合わせてプロセッサとメモリのリソースを分析および調整します。 VPA では、スケールアップだけでなく、時間の経過に伴うリソースの使用に基づいたスケールダウンも行います。
スケーリング モードが "自動" または "再作成" に設定されていれば、リソース要求を変更する必要があるときにポッドが削除されます。
リソース ポリシーを指定して個々のコンテナーの CPU とメモリの制約を設定します
ポッドのスケジュール設定に適切なリソースがノードにあることを確認します
プロセッサまたはメモリ リソースに対して行われた調整の構成可能なログ記録
クラスター リソース使用率を向上させ、他のポッドの CPU とメモリを解放します。
制限事項
ポッドの垂直方向の自動スケーリングでは、1 つのクラスターにつき
VerticalPodAutoscaler
オブジェクトに関連付けられた最大 1,000 個のポッドがサポートされます。VPA は、クラスターで利用可能なリソースよりも多くのリソースを推奨することがあります。 その結果、ノードに十分なリソースがないため、ポッドをノードに割り当てて実行することができなくなります。 この制限を克服するには、LimitRange を名前空間ごとに利用可能な最大リソースに設定します。これにより、ポッドは指定よりも多くのリソースを要求しなくなります。 さらに、
VerticalPodAutoscaler
オブジェクト内のポッドごとに許容される最大リソースの推奨値を設定できます。 ノード リソースが不足する問題を VPA で完全に解決することはできないことに注意してください。 この制限範囲は固定ですが、ノード リソースの使用量は動的に変化します。同じ CPU とメモリ使用量のメトリックに基づいてスケーリングを行う Horizontal Pod Autoscaler を Vertical Pod Autoscaler と併用することはお勧めしません。
VPA レコメンダーは最大 8 日間の履歴データのみを保存します。
ワークロードの実際のメモリ使用量の可視性が制限されているため、VPA は JVM ベースのワークロードをサポートしていません。
VPA のマネージド実装と並行して独自の VPA 実装を実行することは推奨もサポートもされていません。 追加のレコメンダーまたはカスタマイズされたレコメンダーの使用はサポートされています。
AKS Windows コンテナーはサポートされていません。
準備
AKS クラスターでは、Kubernetes バージョン 1.24 以降が実行されています。
インストールおよび構成済みの Azure CLI バージョン 2.52.0 以降。 バージョンを確認するには、
az --version
を実行します。 インストールまたはアップグレードする必要がある場合は、Azure CLI のインストールに関するページを参照してください。VPA をインストールするクラスターに
kubectl
を接続する必要があります。
VPA の概要
API オブジェクト
Vertical Pod Autoscaler は、Kubernetes 自動スケーリング API グループの API リソースです。 サポートされているバージョンは 0.11 以降で、Kubernetes autoscaler のリポジトリにあります。
VPA オブジェクトは、次の 3 つのコンポーネントで構成されます。
レコメンダー - 現在および過去のリソース消費量を監視し、それに基づいて、コンテナーの CPU とメモリの要求/制限の推奨値を提供します。 レコメンダーは、メトリック履歴、メモリ不足 (OOM) イベント、VPA のデプロイ仕様を監視し、適正な要求を提案します。 適切なリソース要求と制限の構成を提供することで、制限の増減が行われます。
アップデーター - どの管理対象ポッドに適切なリソースが設定されているかを確認し、適切なリソースが設定されていない場合はポッドを強制終了して、更新された要求を使用してコントローラーがポッドを再作成できるようにします。
VPA アドミッション コントローラー - 新しいポッド (アップデーターのアクティビティによりコントローラーによって作成または再作成されたポッド) に対して適切なリソース要求を設定します。
VPA アドミッション コントローラー
VPA アドミッション コントローラーは、自身を Mutating Admission Webhook として登録するバイナリです。 これはは、ポッドが作成されるたびに API サーバーから要求を取得し、一致する VPA 構成があるかどうかを評価するか、対応する VPA 構成を見つけて現在の推奨事項を使用してポッドにリソース要求を設定します。
overlay-vpa-cert-webhook-check
と呼ばれるスタンドアロン ジョブが VPA アドミッション コントローラーの外部で実行されます。 overlay-vpa-cert-webhook-check
は、証明書の作成と更新、および VPA アドミッション コントローラーの MutatingWebhookConfiguration
としての登録に使用されます。
高可用性を実現するために、AKS は 2 つのアドミッション コントローラー レプリカをサポートしています。
VPA オブジェクトの動作モード
リソース要件を自動計算させるコントローラーごとに、Vertical Pod Autoscaler リソースが挿入されます。 最も一般的には、これは "デプロイ" です。 VPA には 4 つの動作モードがあります。
Auto
- VPA は、ポッドの作成中にリソース要求を割り当てて、優先更新メカニズムを使用して既存のポッドを更新します。 現在、Auto
はRecreate
と同等であり、既定のモードでもあります。 ポッド要求の再起動不要の ("インプレース") 更新が利用可能になれば、Auto
モードはそれを優先更新メカニズムとして使用できます。Recreate
モードを使用する場合、VPA は、ポッドのリソース要求を変更する必要が生じるとそれを削除します。 それにより、ポッドが一斉に再起動され、アプリケーションの不整合が発生する場合があります。 その状況で再起動を制限し、一貫性を維持するには、PodDisruptionBudget を使用します。Recreate
- VPA はポッドの作成中にリソース要求を割り当てます。また、要求されたリソースが新しい推奨事項と大幅に異なる場合は、既存のポッドを削除することでポッドを更新します (ポッド中断バジェットが定義されている場合は、それが考慮されます)。 このモードは、リソース要求が変更されるたびに必ずポッドを再起動する必要がある場合にのみ使用し、それ以外の場合は使用しないでください。 それ以外の場合は、再起動不要の更新が利用可能になったときにそれを利用できるAuto
モードが推奨されます。Initial
- VPA はポッドの作成中にのみリソース要求を割り当てます。その後はリソース要求を変更しません。Off
- VPA はポッドのリソース要件を自動的に変更しません。 推奨事項は計算され、VPA オブジェクトで調べることができます。
アプリケーション開発時のデプロイ パターン
VPA に慣れていない場合に推奨される一般的なデプロイ パターンは、アプリケーションの開発中に次の手順を実行して、VPA に固有のリソース使用率の特性を特定し、VPA をテストして正常に機能していることを確認し、他の Kubernetes コンポーネントと共に VPA をテストしてクラスターのリソース使用率を最適化することです。
実稼働クラスターで UpdateMode = "Off" を設定し、推奨モードで VPA を実行することで、VPA をテストし、VPA の扱い方に慣れることができます。 UpdateMode = "Off" により、停止を引き起こす可能性のある誤った構成が発生するのを回避できます。
まず、一定期間にわたって実際のリソース使用率の統計情報を収集することで、監視を確立します。 これにより、リソース上で実行されているワークロードの影響を受ける、コンテナーとポッドのリソースの動作および症状や問題の兆候を理解することができます。
監視データに精通して、パフォーマンスの特性を理解します。 この分析情報に基づいて、必要な要求/制限を適宜設定し、次のデプロイまたはアップグレードでそれを適用します。
要件に応じて、
updateMode
値をAuto
、Recreate
、またはInitial
に設定します。
クラスターで VPA をデプロイ、アップグレード、または無効化する
このセクションでは、クラスターで Vertical Pod Autoscaler をデプロイ、アップグレード、または無効化します。
新しいクラスターで VPA を有効にするには、az aks create コマンドで
--enable-vpa
パラメーターを使用します。az aks create -n myAKSCluster -g myResourceGroup --enable-vpa
数分後、コマンドが完了し、クラスターに関する情報が JSON 形式で返されます。
必要に応じて、既存のクラスターで VPA を有効にするには、[] コマンドをhttps://learn.microsoft.com/en-us/cli/azure/aks?view=azure-cli-latest#az-aks-update使用
--enable-vpa
します。az aks update -n myAKSCluster -g myResourceGroup --enable-vpa
数分後、コマンドが完了し、クラスターに関する情報が JSON 形式で返されます。
必要に応じて、既存のクラスターで VPA を無効にするには、[] コマンドをhttps://learn.microsoft.com/en-us/cli/azure/aks?view=azure-cli-latest#az-aks-update使用
--disable-vpa
します。az aks update -n myAKSCluster -g myResourceGroup --disable-vpa
数分後、コマンドが完了し、クラスターに関する情報が JSON 形式で返されます。
Vertical Pod Autoscaler ポッドが正常に作成されたことを確認するには、kubectl get コマンドを使用します。
kubectl get pods -n kube-system
コマンドの出力には、VPA ポッドに固有の次の結果が含まれています。 ポッドに "実行中" 状態が表示されるはずです。
NAME READY STATUS RESTARTS AGE
vpa-admission-controller-7867874bc5-vjfxk 1/1 Running 0 41m
vpa-recommender-5fd94767fb-ggjr2 1/1 Running 0 41m
vpa-updater-56f9bfc96f-jgq2g 1/1 Running 0 41m
Vertical Pod Autoscaler のインストールをテストする
次の手順では、それぞれ 100 ミリコアを要求し、500 ミリコアをわずかに上回って利用しようとする 1 つのコンテナーを実行する、2 つのポッドを含むデプロイを作成します。 デプロイメントを指す VPA 構成も作成されます。 VPA ではポッドの動作を監視し、約 5 分後により高い CPU 要求で更新されます。
hamster.yaml
という名前のファイルを作成し、kubernetes/autoscaler GitHub リポジトリから Vertical Pod Autoscaler の例の次のマニフェストをコピーします。kubectl apply コマンドを使用して
hamster.yaml
の Vertical Pod Autoscaler の例をデプロイし、YAML マニフェストの名前を指定します。kubectl apply -f hamster.yaml
数分後、コマンドが完了し、クラスターに関する情報が JSON 形式で返されます。
次の kubectl get コマンドを実行して、hamster サンプル アプリケーションからポッドを取得します。
kubectl get pods -l app=hamster
出力例は次のようになります。
hamster-78f9dcdd4c-hf7gk 1/1 Running 0 24s hamster-78f9dcdd4c-j9mc7 1/1 Running 0 24s
いずれかのポッドで kubectl describe コマンドを使用して、CPU とメモリの予約を表示します。 "exampleID" を、前の手順の出力で返されたポッド ID のいずれかに置き換えます。
kubectl describe pod hamster-exampleID
出力例は、クラスターに関する情報のスニペットです。
hamster: Container ID: containerd:// Image: k8s.gcr.io/ubuntu-slim:0.1 Image ID: sha256: Port: <none> Host Port: <none> Command: /bin/sh Args: -c while true; do timeout 0.5s yes >/dev/null; sleep 0.5s; done State: Running Started: Wed, 28 Sep 2022 15:06:14 -0400 Ready: True Restart Count: 0 Requests: cpu: 100m memory: 50Mi Environment: <none>
この例では、ポットでは 100 millicpu と 50 メビバイトのメモリが予約されています。 このサンプル アプリケーションの場合、ポッドの実行に必要なのは 100 millicpu 未満なので、使用可能な CPU 容量はありません。 また、ポッドでは、必要な量よりはるかに少ないメモリが予約されます。 Vertical Pod Autoscaler の vpa-recommender デプロイでは、hamster アプリケーションをホストしているポッドを分析して、CPU とメモリの要件が適切かどうかを確認します。 調整が必要な場合、vpa-updater では更新された値でポッドを再起動します。
vpa-updater が新しい hamster ポッドを起動するのを待ちます (これには数分かかります)。 kubectl get コマンドを使用してポッドを監視できます。
kubectl get --watch pods -l app=hamster
新しい hamster ポッドが開始されたら、kubectl describe コマンドを実行しているポッドを記述し、更新された CPU とメモリの予約を表示します。
kubectl describe pod hamster-<exampleID>
出力例は、ポッドを説明する情報のスニペットです。
State: Running Started: Wed, 28 Sep 2022 15:09:51 -0400 Ready: True Restart Count: 0 Requests: cpu: 587m memory: 262144k Environment: <none>
前の出力では、CPU 予約が 587 millicpu に増加し、元の値の 5 倍を超えていることがわかります。 メモリは 262,144 キロバイトに増加しました。これは約 250 メビバイト (元の値の 5 倍) です。 このポッドはリソース不足であり、Vertical Pod Autoscaler ではより適切な値で見積もりを修正しました。
VPA から更新された推奨事項を表示するには、kubectl describe コマンドを実行して hamster-vpa リソース情報を記述します。
kubectl describe vpa/hamster-vpa
出力例は、リソース使用率に関する情報のスニペットです。
State: Running Started: Wed, 28 Sep 2022 15:09:51 -0400 Ready: True Restart Count: 0 Requests: cpu: 587m memory: 262144k Environment: <none>
Pod Autoscaler 要求を設定する
ポッドの垂直方向の自動スケーリングでは、updateMode が Auto に設定されている場合に、VerticalPodAutoscaler
オブジェクトを使用してポッドのリソース要求を自動的に設定します。要件とテストに応じて異なる値を設定できます。 この例では、updateMode が Recreate
に設定されています。
次のコマンドを実行して、クラスターの VPA を有効にします。 クラスター名
myAKSCluster
を AKS クラスターの名前に置き換え、myResourceGroup
をクラスターがホストされているリソース グループの名前に置き換えます。az aks update -n myAKSCluster -g myResourceGroup --enable-vpa
azure-autodeploy.yaml
という名前のファイルを作成し、そこに次のマニフェストをコピーします。apiVersion: apps/v1 kind: Deployment metadata: name: vpa-auto-deployment spec: replicas: 2 selector: matchLabels: app: vpa-auto-deployment template: metadata: labels: app: vpa-auto-deployment spec: containers: - name: mycontainer image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine resources: requests: cpu: 100m memory: 50Mi command: ["/bin/sh"] args: ["-c", "while true; do timeout 0.5s yes >/dev/null; sleep 0.5s; done"]
このマニフェストは、2 つのポッドを持つデプロイを記述しています。 各ポッドには、100 milliCPU と 50 MiB のメモリを要求する 1 つのコンテナーがあります。
次の例に示すようにkubectl create コマンドでポッドを作成します。
kubectl create -f azure-autodeploy.yaml
数分後、コマンドが完了し、クラスターに関する情報が JSON 形式で返されます。
次の kubectl get コマンドを実行してポッドを取得します。
kubectl get pods
出力は、ポッドの名前と状態を示す次の例のようになります。
NAME READY STATUS RESTARTS AGE vpa-auto-deployment-54465fb978-kchc5 1/1 Running 0 52s vpa-auto-deployment-54465fb978-nhtmj 1/1 Running 0 52s
azure-vpa-auto.yaml
という名前のファイルを作成し、VerticalPodAutoscaler
を説明する次のマニフェストをコピーします。apiVersion: autoscaling.k8s.io/v1 kind: VerticalPodAutoscaler metadata: name: vpa-auto spec: targetRef: apiVersion: "apps/v1" kind: Deployment name: vpa-auto-deployment updatePolicy: updateMode: "Recreate"
targetRef.name
値は、vpa-auto-deployment
という名前のデプロイによって制御されるすべてのポッドがVerticalPodAutoscaler
に属することを指定します。updateMode
値がRecreate
であるということは、Vertical Pod Autoscaler コントローラーでポッドを削除し、CPU とメモリの要求を調整してから、新しいポッドを作成できることを意味します。kubectl apply コマンドを使用して、マニフェストをクラスターに適用します。
kubectl create -f azure-vpa-auto.yaml
数分待ってから、次の kubectl get コマンドを実行して、実行中のポッドをもう一度表示します。
kubectl get pods
出力は、ポッドの名前が変更されていることとポッドの状態を示す次の例のようになります。
NAME READY STATUS RESTARTS AGE vpa-auto-deployment-54465fb978-qbhc4 1/1 Running 0 2m49s vpa-auto-deployment-54465fb978-vbj68 1/1 Running 0 109s
Kubectl get コマンドを使用して、実行中のポッドの 1 つに関する詳細情報を取得します。
podName
を、前の手順で取得した、いずれかのポッドの名前に置き換えます。kubectl get pod podName --output yaml
出力は次の例のようになります。Vertical Pod Autoscaler コントローラーがメモリ要求を 262144k に、CPU 要求を 25 milliCPU に増やしたことを示しています。
apiVersion: v1 kind: Pod metadata: annotations: vpaObservedContainers: mycontainer vpaUpdates: 'Pod resources updated by vpa-auto: container 0: cpu request, memory request' creationTimestamp: "2022-09-29T16:44:37Z" generateName: vpa-auto-deployment-54465fb978- labels: app: vpa-auto-deployment spec: containers: - args: - -c - while true; do timeout 0.5s yes >/dev/null; sleep 0.5s; done command: - /bin/sh image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine imagePullPolicy: IfNotPresent name: mycontainer resources: requests: cpu: 25m memory: 262144k
Vertical Pod Autoscaler に関する詳細情報と、CPU とメモリに関する推奨事項を取得するには、kubectl get コマンドを使用します。
kubectl get vpa vpa-auto --output yaml
出力は次の例のようになります。
recommendation: containerRecommendations: - containerName: mycontainer lowerBound: cpu: 25m memory: 262144k target: cpu: 25m memory: 262144k uncappedTarget: cpu: 25m memory: 262144k upperBound: cpu: 230m memory: 262144k
結果は、コンテナーを最適に実行するために、CPU やメモリのターゲットを変更する必要がないことを
target
属性によって指定していることを示しています。 ターゲット CPU とメモリの推奨事項がより高い場合、結果は異なる可能性があります。Vertical Pod Autoscaler では、
lowerBound
およびupperBound
属性を使用して、ポッドを削除して新しいポッドに置き換えるかどうかを決定します。 ポッドに下限より小さいか上限より大きい要求がある場合、Vertical Pod Autoscaler ではポッドを削除し、ターゲット属性を満たすポッドに置き換えます。
Vertical Pod Autoscaler の追加のレコメンダー
VPA のコア コンポーネントの 1 つがレコメンダーです。 これは、リアルタイムのリソース消費量に基づいてリソース使用量に関する推奨事項を提供します。 クラスターで VPA を有効にすると、AKS はレコメンダーをデプロイします。 カスタマイズされたレコメンダーまたは既定と同じイメージを持つ追加のレコメンダーをデプロイできます。 カスタマイズされたレコメンダーを使用する利点は、推奨事項のロジックをカスタマイズできることです。 VPA オブジェクトが多数ある場合は、追加のレコメンダーを使用して VPA を複数のレコメンダーに分割できます。
次の例は、既存の AKS クラスターに適用する追加のレコメンダーです。 その後、追加のレコメンダーを使用するように VPA オブジェクトを構成します。
extra_recommender.yaml
という名前のファイルを作成し、そこに次のマニフェストをコピーします。apiVersion: apps/v1 kind: Deployment metadata: name: extra-recommender namespace: kube-system spec: replicas: 1 selector: matchLabels: app: extra-recommender template: metadata: labels: app: extra-recommender spec: serviceAccountName: vpa-recommender securityContext: runAsNonRoot: true runAsUser: 65534 # nobody containers: - name: recommender image: registry.k8s.io/autoscaling/vpa-recommender:0.13.0 imagePullPolicy: Always args: - --recommender-name=extra-recommender resources: limits: cpu: 200m memory: 1000Mi requests: cpu: 50m memory: 500Mi ports: - name: prometheus containerPort: 8942
kubectl apply コマンドを使用して
extra-recomender.yaml
Vertical Pod Autoscaler の例をデプロイし、YAML マニフェストの名前を指定します。kubectl apply -f extra-recommender.yaml
数分後、コマンドが完了し、クラスターに関する情報が JSON 形式で返されます。
hamnster_extra_recommender.yaml
という名前のファイルを作成し、そこに次のマニフェストをコピーします。apiVersion: "autoscaling.k8s.io/v1" kind: VerticalPodAutoscaler metadata: name: hamster-vpa spec: recommenders: - name: 'extra-recommender' targetRef: apiVersion: "apps/v1" kind: Deployment name: hamster updatePolicy: updateMode: "Auto" resourcePolicy: containerPolicies: - containerName: '*' minAllowed: cpu: 100m memory: 50Mi maxAllowed: cpu: 1 memory: 500Mi controlledResources: ["cpu", "memory"] --- apiVersion: apps/v1 kind: Deployment metadata: name: hamster spec: selector: matchLabels: app: hamster replicas: 2 template: metadata: labels: app: hamster spec: securityContext: runAsNonRoot: true runAsUser: 65534 # nobody containers: - name: hamster image: k8s.gcr.io/ubuntu-slim:0.1 resources: requests: cpu: 100m memory: 50Mi command: ["/bin/sh"] args: - "-c" - "while true; do timeout 0.5s yes >/dev/null; sleep 0.5s; done"
controlledResources
にmemory
が指定されていない場合、レコメンダーは OOM イベントに応答しません。 その場合は、controlledValues
で CPU のみを設定します。controlledValues
では、RequestsOnly
オプションでコンテナーのリソース要求を更新するか、RequestsAndLimits
オプションを使用してリソース要求と制限の両方を更新するかを選択できます。 既定値はRequestsAndLimits
です。RequestsAndLimits
オプションを使用する場合、要求は実際の使用量に基づいて計算され、制限は現在のポッドの要求と制限の比率に基づいて計算されます。たとえば、2 つの CPU を要求し、CPU を 4 つまでに制限するポッドから開始する場合、VPA は常に制限を要求の 2 倍に設定します。 同じ原則がメモリにも適用されます。
RequestsAndLimits
モードを使用すると、これは最初のアプリケーション リソースの要求と制限のブループリントとして機能します。
自動モードを使用し、CPU とメモリの両方に対する推奨事項を計算することで、VPA オブジェクトを簡素化できます。
kubectl apply コマンドを使用して
hamster_extra-recomender.yaml
の例をデプロイし、YAML マニフェストの名前を指定します。kubectl apply -f hamster_customized_recommender.yaml
vpa-updater が新しい hamster ポッドを起動するのを待ちます (これには数分かかります)。 kubectl get コマンドを使用してポッドを監視できます。
kubectl get --watch pods -l app=hamster
新しい hamster ポッドが開始されたら、kubectl describe コマンドを実行しているポッドを記述し、更新された CPU とメモリの予約を表示します。
kubectl describe pod hamster-<exampleID>
出力例は、ポッドを説明する情報のスニペットです。
State: Running Started: Wed, 28 Sep 2022 15:09:51 -0400 Ready: True Restart Count: 0 Requests: cpu: 587m memory: 262144k Environment: <none>
VPA から更新された推奨事項を表示するには、kubectl describe コマンドを実行して hamster-vpa リソース情報を記述します。
kubectl describe vpa/hamster-vpa
出力例は、リソース使用率に関する情報のスニペットです。
State: Running Started: Wed, 28 Sep 2022 15:09:51 -0400 Ready: True Restart Count: 0 Requests: cpu: 587m memory: 262144k Environment: <none> Spec: recommenders: Name: customized-recommender
トラブルシューティング
VPA のインストールに関する問題を診断するには、次の手順を実行します。
次のコマンドを使用して、すべてのシステム コンポーネントが実行されているかどうかを確認します。
kubectl --namespace=kube-system get pods|grep vpa
出力には、3 つのポッド (レコメンダー、アップデーター、アドミッション コントローラー) が一覧表示され、すべての状態が Running
ステータスを示すはずです。
システム コンポーネントがエラーをログに記録しているかどうかを確認します。 前のコマンドによって返されたポッドごとに、次のコマンドを実行します。
kubectl --namespace=kube-system logs [pod name] | grep -e '^E[0-9]\{4\}'
次のコマンドを実行して、カスタム リソース定義が作成されたことを確認します。
kubectl get customresourcedefinition | grep verticalpodautoscalers
次のステップ
この記事では、アプリケーションの要件に合わせて、クラスター ノードの CPU やメモリなどのリソース使用率を自動的にスケーリングする方法について説明しました。
また、ポッドの水平オートスケーラーを使用して、アプリケーションを実行するポッドの数を自動的に調整することもできます。 ポッドの水平オートスケーラーの使用手順については、「AKS でのアプリケーションのスケーリング」を参照してください。
関連する VPA オブジェクトの定義の詳細については、「Vertical Pod Autoscaler [API リファレンス]」を参照してください。