説明
ResourceQuota は、ネームスペース内で許可するリソース要求量の合計やオブジェクト数を制限します。必要なクォータがないと、特定のチームやワークロードが過剰にリソースを要求する場合があります。CPU・メモリーの要求量クォータは、実際の使用量を直接制限したり容量を予約したりする機能とは異なります。
想定される影響
- 過剰なリソース要求や Pod の作成が、他のワークロードの配置に影響する場合があります。
- 小さすぎるクォータは、必要なオブジェクトの新規作成や変更を拒否する場合があります。
対処方法
- ネームスペースの用途と容量に合わせて ResourceQuota を設定してください。CPU・メモリーの要求量クォータを使う場合は、Pod に必要な requests を指定するか、LimitRange のデフォルト値を用意してください。
- 実行時の使用量はコンテナーごとの limits などで別途管理し、新しい要求の許可・拒否を確認してください。クォータの追加だけで既存の Pod が終了することはありません。
例
mynewpod ネームスペースが既に存在する前提です。イメージと数値は実際の要件に合わせてください。cpu: "1000" は 1000 CPU を意味し、1000m ではありません。この例は CPU・メモリーの要求量と Pod 数だけを制限します。
変更前
yaml
apiVersion: v1
kind: Pod
metadata:
name: pod1
namespace: mynewpod
spec:
containers:
- name: app
image: images.my-company.example/app:v4
Pod を作成しますが、この抜粋にはネームスペースのクォータがありません。別途設定されたポリシーと実際の使用量を確認する必要があります。
変更後
yaml
apiVersion: v1
kind: ResourceQuota
metadata:
name: pods-high
namespace: mynewpod
spec:
hard:
cpu: "1000"
memory: 200Gi
pods: "10"
---
apiVersion: v1
kind: Pod
metadata:
name: pod1
namespace: mynewpod
spec:
containers:
- name: app
image: images.my-company.example/app:v4
resources:
requests:
cpu: "250m"
memory: "64Mi"
ResourceQuota と Pod の要求量を指定します。CPU・メモリー要求量の合計と Pod 数を制限しますが、個別コンテナーの実行時の使用上限を設定するものではありません。