【リソースクォータ】

リソースクォータ(Kubernetes) とは?

最終更新:
💡 Namespace全体で使う、リソースの枠を決める

KubernetesのNamespace内で、CPU・メモリのrequestsやlimitsの合計、オブジェクト数などに上限を設ける仕組み。設定した制約に違反する作成・更新のリクエストを拒否する。

📌 このページのポイント
Namespaceごとに、合計の枠を決めるNamespace: team-arequests.cpu:4Pod要求 1Pod要求 2要求合計 3 / 枠 4Namespace: team-brequests.cpu:8Pod要求 2Pod要求 2Pod要求 2要求合計 6 / 枠 8図はCPU要求の例。実測の使用量ではない枠内でも、Podの配置や起動は別の条件
数値は説明用のCPU要求。team-aは1+2=3、team-bは2+2+2=6で、それぞれ枠4/8の75%。Quota違反の作成・更新を拒否するが、既存リソースを自動削減する仕組みではない。
ひよこ ひよこ
同じクラスタを使うチームごとに枠を決められる?
ペンギン先生 ペンギン先生
チームごとにNamespaceを分け、その中にResourceQuotaを設定する方法があるよ。CPUやメモリの宣言値の合計、Podなどの個数を制限できる。ただし、枠を設けるだけで実際の計算資源を確保できるわけではないんだ。
ひよこ ひよこ
CPUの上限は実際に使った量なの?
ペンギン先生 ペンギン先生
たとえばrequests.cpuは、対象PodのCPU要求の合計だよ。limits.cpuならCPU上限値の合計を数える。図の「枠4に対して要求合計3」は、実測のCPU使用率を表しているのではないんだ。
ひよこ ひよこ
超えたらすぐエラーになる?
ペンギン先生 ペンギン先生
制約に違反する作成や更新のAPIリクエストは403で拒否されるよ。ただしDeployment自体は作成できても、その管理下のPodが作成できないことがある。適用コマンドの成功だけでなく、対象の状態やイベントも確かめよう。
ひよこ ひよこ
枠を小さくすると、動いているPodは消える?
ペンギン先生 ペンギン先生
Quotaの変更だけで、既存のPodが自動で削減されることはないよ。新しい作成や更新に影響する仕組みなんだ。メモリなどの実行時の制限や、Podの配置とは役割を分けて考えよう。
ひよこ ひよこ
LimitRangeも必要なの?
ペンギン先生 ペンギン先生
合計の枠を決めるResourceQuotaに対し、LimitRangeは個々のPod・コンテナなどの最小値・最大値や既定値を扱うよ。CPUやメモリのQuotaに必要なrequestsやlimitsが未指定ならPod作成を拒否され得るので、既定値の設定と組み合わせることがあるんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「ResourceQuota」って出てきたら「Namespace全体のリソース割当や個数に上限を設ける仕組み」と思えばだいたいOK!
📖 おまけ:英語の意味
「Resource Quota」 = リソースの割当枠
💬 Quotaは割当量という意味だよ。KubernetesではNamespace単位の合計枠を表す。実測のCPU使用率をそのまま制限する値とは区別しよう。

参考資料

← 用語集にもどる