0
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?

アプリケーションに適切なリソースを設定しよう

Posted at

メモリ、CPUについて

コンテナのリソース使用量を求める:Resource requests

確保したいリソースの最低使用量を指定。これを満たすNodeを調べてスケジュールするが、どのNodeも満たさない場合、Podはスケジュールされない。
マニフェスト例

    resource:
        requests:
            memory: "64Mi"
            cpu: "10m"

コンテナのリソース使用量を制限する:Resource limits

コンテナの使えるリソースの上限を指定。
もしメモリが使用量を超えると OOM > podがkillされてしまう
もしCPUが超えると アプリが止まることはないが、スロットリングが発生しアプリの動作が低下する。
マニフェスト例

    resource:
        limits:
            memory: "64Mi"
            cpu: "10m"

リソースの単位

メモリ
指定しない場合、1は1Byteを意味する. K,Mはそれぞれキロ、メガ。
Kiっていうのもあってこれは2^10=1024。他の単位も調べてみてね。
CPU
単位を指定しない場合、1はCPUの1コアを意味する。1m=0.001コアなので、通常整数もしくはミリコアで指定する。

QoSっていう考え

これ天才。
Nodeのメモリが完全に枯渇するとその上のコンテナが動かなくなってアプリが停止してしまう。それを防ぐためにQoS(Quality of Service)に応じてOOM Killerが働いて優先度の低い順にPodを◯していくという仕組み。
Qos class を簡単に紹介
Guaranteed: Pod内のコンテナ全てのリソースにrequests,limitsが設定されている。さらにreq=limの値となっている(メモリ、CPUともに)
Burstable: Pod内のコンテナの内少なくとも一つにメモリかCPUのリソースのreq/limが設定されている。
BestEffort: 上のどちらでもないもの。
上から順に優先順位が高いぞ。軽く覚えておいて損はないでしょう。

終わり

0
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
0
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?