垂直ポッド自動スケーリング

このページでは、垂直ポッド自動スケーリングの概要と、それを使用してコンテナの CPU リクエストメモリ リクエストを調整する方法について説明します。また、このページには VerticalPodAutoscaler カスタム リソースとそれに関連するタイプの参考資料も記載されています。

概要

垂直ポッド自動スケーリング(VPA)を使用すると、コンテナの CPU リクエストやメモリ リクエストの値を考える必要がなくなります。オートスケーラーが、CPU リクエストおよびメモリ リクエストの値を推奨したり、それらの値を自動的に更新したりするからです。

垂直ポッド自動スケーリングには、次のような利点があります。

  • ポッドが必要な分のリソースのみを使用するため、クラスタノードを効率的に利用できます。

  • ポッドは、適切な量のリソースが利用可能なノードにスケジュールされます。

  • CPU リクエストやメモリ リクエストの適切な値を求めるために、時間のかかるベンチマーク タスクを実施する必要がありません。

  • オートスケーラーによって時間の経過とともに CPU リクエストとメモリ リクエストが自動的に調整されるため、人手によるメンテナンス時間を節約できます。

ベータ版の制限事項

  • 1,000 ノードを超えるクラスタでは、垂直ポッド自動スケーリングを有効にしないでください。

  • 垂直ポッド自動スケーリングがサポートする VPA オブジェクトの数は、1 クラスタあたり最大 200 です。

  • 垂直ポッド自動スケーリングは、バージョン 1.12.6 以降、リージョン クラスタでサポートされます。

  • CPU とメモリに対しては、垂直ポッド自動スケーリングと水平ポッド自動スケーリング(HPA)を併用しないでください。ただし、カスタム指標外部指標に対しては、VPA と HPA の併用が可能です。

自動モードでの垂直ポッド自動スケーリング

Kubernetes の制限により、実行中のポッドのリソース リクエストを変更するには、そのポッドを再作成しなければなりません。したがって、updateMode が「Auto」の VerticalPodAutoscaler を作成した場合、ポッドのリソース リクエストを変更する必要が生じた際に、VerticalPodAutoscaler はポッドを強制排除します。

再起動するポッドの数を制限するには、ポッド停止予算を使用します。

クラスタが新しいサイズのワークロードを確実に処理できるようにするには、クラスタ オートスケーラーおよびノード自動プロビジョニングを使用します。Vertical Pod Autoscaler は更新の前にクラスタ オートスケーラーに通知し、サイズ変更されたワークロードに必要なリソースは、再作成の前に提供され、中断時間を最小限に抑えます。

次のステップ

リファレンス

VerticalPodAutoscaler v1beta2 autoscaling.k8s.io

フィールド

TypeMeta

API グループ、バージョン、種類。

metadata

ObjectMeta

標準のオブジェクト メタデータ

spec

VerticalPodAutoscalerSpec

VerticalPodAutoscaler の動作。

status

VerticalPodAutosclerStatus

最後にモニタリングされた VerticalPodAutoscaler のステータス。

VerticalPodAutoscalerSpec v1beta2 autoscaling.k8s.io

フィールド
targetRef

CrossVersionObjectReference

Deployment や StatefulSet などの制御対象のオートスケーラーに対してポッドのセットを管理するコントローラへのリファレンス。[Scale](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.13/#scalespec-v1-autoscaling){:.external} サブリソースのある任意のコントローラに VerticalPodAutoscaler を指定できます。通常、VerticalPodAutoscaler はコントローラの ScaleStatus からポッドセットを取得します。DaemonSet など、よく知られているコントローラの場合、VerticalPodAutoscaler はそのコントローラの仕様からポッドセットを取得します。

updatePolicy

PodUpdatePolicy

ポッドの起動時に推奨アップデートを適用するかどうか、またポッドのライフサイクル期間中に推奨アップデートを適用するかどうかを指定します。

resourcePolicy

PodResourcePolicy

個々のコンテナに対する CPU リクエストおよびメモリ リクエストの調整方法に関するポリシーを指定します。

VerticalPodAutoscalerList v1beta2 autoscaling.k8s.io

フィールド

TypeMeta

API グループ、バージョン、種類。

metadata

ObjectMeta

標準のオブジェクト メタデータ

items

VerticalPodAutoscaler array

VerticalPodAutoscaler オブジェクトのリスト。

PodUpdatePolicy v1beta2 autoscaling.k8s.io

フィールド
updateMode

string

ポッドの起動時に推奨アップデートを適用するかどうか、またポッドのライフサイクル期間中に推奨アップデートを適用するかどうかを指定します。有効な値は、「Off」、「Initial」、「Recreate」、「Auto」です。

PodResourcePolicy v1beta2 autoscaling.k8s.io

フィールド
containerPolicies

ContainerResourcePolicy array

個々のコンテナに対するリソース ポリシーの配列。

ContainerResourcePolicy v1beta2 autoscaling.k8s.io

フィールド
containerName

string

ポリシーが適用されるコンテナの名前。指定しない場合、そのポリシーはデフォルト ポリシーとして機能します。

mode

ContainerScalingMode

コンテナの起動時に推奨アップデートを適用するかどうか、またコンテナのライフサイクル期間中に推奨アップデートを適用するかどうかを指定します。有効な値は、「Off」と「Auto」です。

minAllowed

ResourceList

そのコンテナで許容される CPU リクエストとメモリ リクエストの最小値を指定します。

maxAllowed

ResourceList

そのコンテナで許容される CPU リクエストとメモリ リクエストの最大値を指定します。

VerticalPodAutoscalerStatus v1beta2 autoscaling.k8s.io

フィールド
recommendation

RecommendedPodResources

CPU リクエストおよびメモリ リクエストの最新の推奨値。

conditions

VerticalPodAutoscalerCondition array

VerticalPodAutoscaler の現在のステータスを示します。

RecommendedPodResources v1beta2 autoscaling.k8s.io

フィールド
containerRecommendation

RecommendedContainerResources array

個々のコンテナに対するリソースの推奨値の配列。

RecommendedContainerResources v1beta2 autoscaling.k8s.io

フィールド
containerName

string

推奨値が適用されるコンテナの名前。

target

ResourceList

そのコンテナに対する CPU リクエストとメモリ リクエストの推奨値。

lowerBound

ResourceList

そのコンテナに対する CPU リクエストとメモリ リクエストの推奨値の下限。この値は、アプリケーションが安定して動作するのに十分であるとは限りません。CPU リクエストとメモリ リクエストがこの値に満たない場合、パフォーマンスや可用性に重大な影響を及ぼす可能性があります。

upperBound

ResourceList

そのコンテナに対する CPU リクエストとメモリ リクエストの推奨値の上限。CPU リクエストとメモリ リクエストをこの値より大きくしても、無駄になる可能性があります。

uncappedTarget

ResourceList

オートスケーラーによって計算された最新のリソース推奨値。実際のリソース使用量のみに基づいており、ContainerResourcePolicy は考慮されていません。実際のリソース使用量に基づく値が ContainerResourcePolicy に違反する場合は、推奨範囲から外れる可能性があります。このフィールドは、ステータスの表示のみが目的です。実際のリソース割り当てには影響しません。

VerticalPodAutoscalerCondition v1beta2 autoscaling.k8s.io

フィールド
type

VerticalPodAutoscalerConditionType

記述する状態のタイプ。有効な値は、「RecommendationProvided」、「LowConfidence」、「NoPodsMatched」、「FetchingHistory」です。

status

ConditionStatus

状態のステータス。有効な値は、「True」、「False」、「Unknown」です。

lastTransitionTime

Time

状態のステータスが最後に遷移した時刻。

reason

string

最後のステータス遷移の理由。

message

string

人間が読める文字列で記述された、最後のステータス遷移についての詳細情報。

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Kubernetes Engine のドキュメント