【クラスターオートスケーラー】

Cluster Autoscaler とは?

最終更新:
💡 Podを置く場所が足りなければ、ノードを増やせるか調べる

KubernetesでPodの配置状況やリソース要求を見て、ノードグループのノード数を自動調整するコンポーネント。追加で配置できるPodがあると増やし、Podを他へ配置できる不要なノードを減らす。設定した上限・下限やクラウドの制約も関係する。

📌 このページのポイント
CAはノード数を調整する 追加を検討 配置できないPod 必要なリソースを要求 新ノードで配置できる? 削除を検討 Podを他へ配置できる? 要求量・待ち時間 PDBなどの制約も確認 追加・削除は必ず成功するわけではない ノード数の上限・下限や割当量も関係 HPA:Podの数 / CA:ノードの数
左は配置できないPodに対するノード追加の検討、右の矢印はPodの再配置を表します。サーバーのアイコンはノードで、数や容量は模式例です。削除の判定には実際のCPU使用率だけでなくrequestsと配置条件を使います。Podはメモリごと移動するわけではなく、再作成・再配置には中断もあり得ます。
ひよこ ひよこ
KubernetesにHPAってあるよね。Cluster Autoscalerとどう違うの?
ペンギン先生 ペンギン先生
HPAはPodのレプリカ数を調整し、Cluster Autoscaler(CA)はそのPodを動かすノードの数を調整するよ。HPAでPodを増やして配置先が足りなくなると、CAによるノード追加が役立つんだ。
ひよこ ひよこ
PendingのPodがあれば、必ずノードが増えるの?
ペンギン先生 ペンギン先生
Pendingという状態だけで決まるわけではないよ。スケジューラーが配置できなかったPodについて、新しいノードなら配置できるか調べる。Podの配置条件やノード数の上限、クラウドの割当量によって、追加しても解決できない場合があるんだ。
ひよこ ひよこ
逆にノードが余ったらどうなるの?
ペンギン先生 ペンギン先生
CPUやメモリの実際の使用率だけを見るのではなく、Podのrequestsという要求量や、別のノードに配置できるかを調べるよ。不要な状態が一定時間続くと削除候補になる。上流CAでは10分が既定の待ち時間だけど、版や設定、サービスによって確認が必要だね。
ひよこ ひよこ
ノードを削除するときに、そこで動いているPodは?
ペンギン先生 ペンギン先生
削除に先立ち、対象PodをEviction APIで終了させ、コントローラーが作り直したPodをスケジューラーが別のノードへ配置するよ。メモリごと移動するわけではなく、一時的な中断もあり得る。厳しいPodDisruptionBudgetや配置先不足などは削除を妨げるんだ。
ひよこ ひよこ
クラウドのオートスケーリングとどう関係するの?
ペンギン先生 ペンギン先生
対応するクラウドのノードグループと連携するよ。たとえばGKEでは背後のMIGのVM数を調整する。ノード作成には時間がかかり、割当量にも左右される。設定した最小・最大数やrequestsを確認し、CAが必ず最安の構成にするとは考えないでね。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Cluster Autoscaler」って出てきたら「Kubernetesのノードを自動で増減させる仕組み」と思えばだいたいOK!
📖 おまけ:英語の意味
「Cluster Autoscaler」 = クラスタ自動拡縮機能
💬 Cluster(複数サーバの集まり)を Auto(自動で)Scale(規模調整)するコンポーネントのことだよ

参考資料

← 用語集にもどる