Cluster Autoscaler
Podのスケジューリング圧力に応じて、クラスターのノードを増減するKubernetesコンポーネント。
リソース不足でスケジュールできないPodが残っていれば新しいノードを起動し、使用率が50%未満のノードはドレインして終了させる。AWSのASG、GCPのMIG、AzureのVMSSといったクラウドの自動スケーリンググループと連携する。縮小時にはPodの優先度とPodDisruptionBudgetが尊重される。
典型的な落とし穴:DaemonSetがあるとノードが生き残る(Cluster Autoscalerはそれを「移動できない」とみなす)ため、ノードが縮小しない。ログ収集用のDaemonSetにはcluster-autoscaler.kubernetes.io/safe-to-evict: "true"アノテーションが必要になる。現代の代替であるKarpenter(もとはAWS発、今はマルチクラウド)はより積極的で、固定のノードグループから選ぶ代わりに、保留中のワークロードに合う大きさのノードをそのつど用意する。