gashirar's blog

ウイスキーがすき/美味しいものがすき/k8sがすき

Expandersで複数NodeGroupをもつEKSのClusterAutoscalerを制御する

はじめに

Self-Managed NodeGroupをもったEKSクラスタにおいて、クラスタのオートスケールが起きたときのどのNodeGroupが拡張されるのだろうと疑問に思ったので調査した忘備録になります。

Expandersを使って解決する

下記ドキュメントのPrioritizing a node group or Auto Scaling groupにあるように、ある程度はコントロールできるようです。

docs.aws.amazon.com

Expandersの説明はGithubにあります。オプションは下記記載があるのですが、priceはGKEでしか使えないとのこと。
EKSのドキュメントで提示されていたのはpriorityleast-wasteですね。

Option 説明
random ランダムに選択(デフォルト)
most-pods スケールアップ時に最も多くのポッドをスケジュールできるNodeGroupを選択
least-waste スケールアップ後のアイドル CPUが最も少なくなるNodeGroupを選択
price コストが最も低く、かつクラスタサイズと一致するマシンを持つNodeGroupを選択(2021/02 GKEのみ)
priority ユーザによって割り当てられた優先度が高いNodeGroupを選択

github.com

こういった部分のチューニングをやる機会は今のところなさそうですが、コスト最適化を考えた場合には選択肢として覚えておいた方が良いかもしれないですね。