Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

KubernetesのEviction Manager

More than 3 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/

yamato
Findyでエンジニア兼プロダクトマネージャー見習いをしています。野球、 音楽フェス、散歩、サウナ、お酒、焼き鳥が好きです。
https://findy-code.io/
findy-inc
エンジニア・採用担当者向けの転職サービスや案件紹介サービスを提供しています。
https://findy-code.io/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away