LoginSignup
14
5

More than 5 years have passed since last update.

この記事は、オールアバウト Advent Calendar 2016の22日目の記事です。
風邪をひいてしまい、ここ1週間くらい体調が優れません。

この前業務中に知ったKubernetesのEviction Managerについて書きます。
特に大きな負荷をかけていないのに、Kubernetesのノードの負荷が急に上がったので何かと思って調べてみたらEviction Managerでした。

Eviction Managerとは

ノードのリソース使用状況を監視して、ノードをいい感じに安定して稼働させてくれるもの。
例えば、ノードのディスクがいっぱいになると使っていないコンテナやイメージを自動でクリーンアップしてくれる。クリーンアップ時はそれなりにCPUとディスクの負荷が上昇する。
元々はkubelet Garbage Collectionだったが、こちらは廃止されるらしい。

発動条件

Eviction Managerが発動する条件はkubeletのオプションで指定する。現状、条件を変更するには各ノードにログインして/etc/default/kubeletを変更する必要がある。

デフォルトでは以下に設定されている。つまり、空きメモリが100M未満かノードの空き容量が10%未満か空きinodeが5%未満のときに発動する。
--eviction-hard=memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%

実際にノードにファイルを大量に書き込みしてinode使用率を96%にしてみたところ、使っていないコンテナとイメージが削除され、inode使用率が減少した。

eviction-minimum-reclaimオプションを設定するとEviction時にどれだけリソースを確保するか設定できるので、Evictionの負荷を多少を軽減させられるかもしれない。

その他にも、ポッドのEvictionやOOMもあるらしいが詳しい挙動は把握できていない。詳しくは、公式ドキュメント参照ください。
http://kubernetes.io/docs/admin/out-of-resource/

14
5
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
14
5