HPA
Horizontal Pod Autoscaler。メトリクスに応じてPodのレプリカ数を増減させるKubernetesのコントローラ。
標準の指標はCPU使用率で、Prometheus Adapter経由のカスタムメトリクス(毎秒リクエスト数やキューの長さなど)も使える。計算式は desired = current × (実測値 / 目標値)。頻繁な増減を防ぐ安定化ウィンドウがあり、既定ではスケールダウンが5分、スケールアップは0分だ。レプリカ数の範囲は minReplicas / maxReplicas で制限する。
よくある落とし穴はメモリで、CPUと違って弾力的に増減しないため、HPAとは相性が悪い。メモリを食うPodは垂直方向に拡張するほうがよい。補完関係にあるのは、KafkaのラグやSQSの深さで動くイベント駆動のKEDAと、ノード単位のKarpenterだ。HPAとCluster Autoscalerを組み合わせると、ようやく全体が伸び縮みする。