1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Kubernetesのノードのスケーリング条件

Last updated at Posted at 2021-11-09

TL;DR

  • スケールアップはリソース不足のPodが作成されたタイミング
  • スケールダウンは(1)ノードの要求リソースが50%以下,(2)全てのPodが他のノードに移動可能,(3)ノード削除不可のアノテーションがされていない,この状態が10分間続いた場合に行われる.
  • 基本的に1ノードずつスケールダウンされるが,空のノードの場合は10ノードまで一度に削除される

参考にした資料

資料内の用語について

  • スケールアップ(scale-up):ノードプールのサイズアップ(ノード追加)
  • スケールダウン(scale-down):ノードプールのサイズダウン(ノード削除)

通常はスケールアップといえばノードの性能自体を上げることをいうが(スケールダウンはその逆),上の資料ではノードの数を増やすことを意味している.ノード自体の増減は一般にスケールイン・アウトというのでちょっと紛らわしい.

スケールアップの条件

Kubernetesのスケールアップは単純で以下の条件を満たすと行われる.

  • Kubernetesでは10秒ごと(--scan-intervalで指定)にUnschedulable状態になっているPodをチェックし,そのPodがあればノードが追加される

ちなみに,ノードが追加されるとPodのエラー内容が「リソース不足」から「ノードの状態がReadyではない」に変わって,その後ノードの準備が出来たらスケジューリングされる.

スケールダウンの条件

スケールダウンの条件は少し複雑になっている.

  • CPU・メモリのリクエストの合計がノードの容量の50%以下になっている(しきい値は変更可能)
  • ノードの内の全てのPod(daemonsetなどのPodを除く)が他のノードに移動可能な場合.Podの設定によってはリソースが空いていても他のノードに移動できない場合がある.
  • ノードにスケールダウン不可のアノテーションがされていない場合

以上の条件に当てはまるかをスケールアップのときと同じで10秒毎にチェックされるが,スケールダウンの場合にはこの状態が10分続いた場合にのみノードが削除される.(この時間についてもフラグなどで変更可能)

スケールダウンは基本的には1ノードずつ行われる.これは特定のノードを削除した後にも他のノードが以上の条件を満たしているか保証されていないためである.ただし,最初のノードが削除されてからまた10分測り直しというわけではなく,連続で削除される可能性はある.

※ただ例外的に**「空のノード」は一度に10ノードまで**削除することが出来る.

スケールダウン時のPodについて

スケールダウンされた場合,ノードにTaintを付与して再度スケジューリング不可の状態にしてPodの削除を行う.これでKubernetesが自動的に他のノードでPodの再作成を行う.

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?