LoginSignup
5

More than 5 years have passed since last update.

Organization

KubernetesのEviction Manager

この記事は、オールアバウト 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/

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
What you can do with signing up
5