Chiroru's Diary

日々の学びをちょこちょこメモしていきます

EKS上のCluster Autoscalerの挙動

学習のアウトプットの場としてブログに戻ってきてみました。 最近K8sに入門したので、その辺りを中心に自分まとめのようなものを挙げてみます。

今回は主にEKS上のCluster AutoscalerとEC2 AutoScaling Groupについての整理です。

(誤りや改善点があればご指摘いただけると幸いです)

そもそもCluster Autoscalerとは

  • Cluster Autoscalerはノードをオートスケールするコンポーネント
    • クラスタ自体のオートスケーリング。ノードを自動的に追加する機能
  • スケジュール不可能な(=pending) podの検出をトリガーに、スケジュールに最適なノードグループを決定してスケールアウトする
  • デフォルトでは10分以上、そのノードで動く全podの合算の要求リソース(request)が、ノードの割り当て可能なリソースの50%以下であり、かつ全podが他のノードに安全に移動可能で、スケールインを妨げる他の要因(PDBアノテーションなど)がない場合、スケールインされる
  • Cluster Autoscalerの状態は、cluster-autscaler-status configmapで確認できる

EKS上のCluster AutoscalerとEC2 AutoScaling Group

  • EKSでは、ノードグループがノードの作成、管理を行う
  • このノードグループはEC2 AutoScaling Groupとして実装される。ノードグループを新規で定義すると、自動的にEC2 AutoScaling Groupとして追加される
  • EC2 AutoScaling Groupは、Capacityに基づきノードを増減させる
  • Cluster AutoscalerをEKSにデプロイすることで、クラスタのresource使用状況を踏まえて、EC2 AutoScaling Groupの、Minimum CapacityとMaximum Capacityを尊重しながら、Desired Capacityの調整を自動化できる。(また、どのノードグループを採用するかも決定する)
    • そのためノードの増減を行う実態は、EC2 AutoScaling Groupとなる
    • オートスケーリングの判断や、適切なノードグループの選択は、Cluster Autoscalerが行う

参考