Cluster Proportional Autoscaler
始める前に
このセクションのために環境を準備してください:
~$prepare-environment autoscaling/workloads/cpa
このラボでは、Cluster Proportional Autoscalerについて学び、クラスターのコンピュート数に比例してアプリケーションをスケールする方法を学びます。
Cluster Proportional Autoscaler(CPA)は、クラスター内のノード数に基づいてレプリカをスケールする水平Pod自動スケーラーです。プロポーショナル自動スケーラーコンテナはクラスターのスケジュール可能なノードとコアの数を監視し、それに応じてレプリカの数をリサイズします。この機能は、CoreDNSやクラスター内のノード/Podの数に応じてスケールする他のサービスなど、クラスターのサイズに合わせて自動スケールする必要があるアプリケーションに役立ちます。
CPAは、Pod内でGolang APIクライアントを実行し、APIサーバーに接続してクラスター内のノードとコアの数をポーリングします。スケーリングパラメータとデータポイントはConfigMapを通じて自動スケーラーに提供され、ポーリング間隔ごとにパラメータテーブルを更新して最新の希望するスケーリングパラメータを使用します。他の自動スケーラーとは異なり、CPAはMetrics APIに依存せず、Metrics Serverも必要としません。

CPAの主な使用例には以下が含まれます:
- オーバープロビジョニング
- コアプラットフォームサービスのスケーリング
- metrics serverやprometheus adapterを必要としない、シンプルで簡単なワークロードスケーリングメカニズム
Cluster Proportional Autoscalerが使用するスケーリング方法
Linear(線形)
- このスケーリング方法では、クラスターで利用可能なノード数またはコア数に直接比例してアプリケーションをスケールします
coresPerReplicaまたはnodesPerReplicaのいずれかを省略することができますpreventSinglePointFailureがtrueに設定されている場合、コントローラーは1つ以上のノードがあれば少なくとも2つのレプリカを確保しますincludeUnschedulableNodesがtrueに設定されている場合、レプリカはノードの総数に基づいてスケールされます。そうでない場合、レプリカはスケジュール可能なノード数のみに基づいてスケールされます(つまり、コードン状態やドレイン中のノードは除外されます)min、max、preventSinglePointFailure、includeUnschedulableNodesはすべてオプションです。設定されていない場合、minはデフォルトで1に、preventSinglePointFailureはデフォルトでfalseに、includeUnschedulableNodesはデフォルトでfalseになりますcoresPerReplicaとnodesPerReplicaはどちらも浮動小数点値です
ConfigMap for Linear(線形のConfigMap)
data:
linear: |-
{
"coresPerReplica": 2,
"nodesPerReplica": 1,
"min": 1,
"max": 100,
"preventSinglePointFailure": true,
"includeUnschedulableNodes": true
}
線形制御モードの方程式:
replicas = max( ceil( cores * 1/coresPerReplica ) , ceil( nodes * 1/nodesPerReplica ) )
replicas = min(replicas, max)
replicas = max(replicas, min)