【りそーすりみっと】

リソースリミット とは?

💡 『使っていいのはここまで』を決めるリソースの交通整理
📌 このページのポイント
Kubernetes CPU/メモリ リソース制限 CPU requests: 250m limits: 500m 保証量 上限(スロットリング) メモリ requests: 128Mi limits: 256Mi 保証量 上限(OOMKill) CPU超過時 スロットリング(速度制限) 処理が遅くなるが停止しない メモリ超過時 OOMKill(強制終了) コンテナが即座に停止 QoSクラス: Guaranteed Burstable BestEffort requestsで保証量、limitsで上限を設定しリソースを管理
CPU/メモリのrequestsとlimitsのイメージ
ひよこ ひよこ

リソースリミットって設定しないとどうなるの?

ペンギン先生 ペンギン先生

1つのPodCPUやメモリを食い尽くして、同じノードの他のPodが動けなくなる可能性があるんだ。シェアハウスで誰かがお風呂のお湯を独占するようなものだよ。

ひよこ ひよこ

requestsとlimitsの違いがよく分からないんだけど…

ペンギン先生 ペンギン先生

requestsは『最低これだけは確保してね』という予約で、limitsは『これ以上は使わないでね』という上限だよ。Kubernetesはrequestsを基にPodをどのノードに配置するか決めるんだ。

ひよこ ひよこ

上限を超えたらどうなるの?

ペンギン先生 ペンギン先生

メモリはlimitsを超えるとOOM Killed(Out of Memory)でコンテナが強制終了されるよ。CPUスロットリングされて処理が遅くなるだけで、終了はされない。この違いは重要だから覚えておいてね。

ひよこ ひよこ

適切な値ってどうやって決めるの?

ペンギン先生 ペンギン先生

最初はPrometheusやMetrics Serverで実際の使用量を計測して、その値を基に設定するのがベストだよ。requestsは通常時の使用量、limitsはピーク時の1.5〜2倍くらいに設定するのが目安だね。VPA(Vertical Pod Autoscaler)で自動調整する方法もあるよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「リソースリミット」って出てきたら「PodCPU・メモリの使用上限の設定」と思えればだいたいOK!
📖 おまけ:英語の意味
「Resource Limit」 = リソースの制限
💬 Resource(資源)のLimit(制限)で、コンテナが使いすぎないように天井を設けるイメージだよ
← 用語集にもどる