Expandersで複数NodeGroupをもつEKSのClusterAutoscalerを制御する
はじめに
Self-Managed NodeGroupをもったEKSクラスタにおいて、クラスタのオートスケールが起きたときのどのNodeGroupが拡張されるのだろうと疑問に思ったので調査した忘備録になります。
Expandersを使って解決する
下記ドキュメントのPrioritizing a node group or Auto Scaling groupにあるように、ある程度はコントロールできるようです。
Expandersの説明はGithubにあります。オプションは下記記載があるのですが、price
はGKEでしか使えないとのこと。
EKSのドキュメントで提示されていたのはpriority
とleast-waste
ですね。
Option | 説明 |
---|---|
random |
ランダムに選択(デフォルト) |
most-pods |
スケールアップ時に最も多くのポッドをスケジュールできるNodeGroupを選択 |
least-waste |
スケールアップ後のアイドル CPUが最も少なくなるNodeGroupを選択 |
price |
コストが最も低く、かつクラスタサイズと一致するマシンを持つNodeGroupを選択(2021/02 GKEのみ) |
priority |
ユーザによって割り当てられた優先度が高いNodeGroupを選択 |
こういった部分のチューニングをやる機会は今のところなさそうですが、コスト最適化を考えた場合には選択肢として覚えておいた方が良いかもしれないですね。