説明
LimitRange は、名前空間内の Pod、コンテナー、PVC に対し、設定したリソース要求量と制限値の範囲を検証します。コンテナーにデフォルトの要求量と制限値を適用することもできます。ポリシーがないと基準の統一が難しい場合がありますが、個別ワークロードの設定や他の admission ポリシーも確認する必要があります。名前空間全体の使用量を制限する ResourceQuota とは役割が異なります。
想定される影響
- 過大な要求や欠落したリソース設定が運用環境に反映される場合があります。
- 厳しすぎる基準や矛盾する設定は、正常な Pod の作成を妨げる場合があります。
対処方法
- 名前空間のワークロード要件に合わせて、LimitRange の対象の種類、最小・最大値、コンテナーのデフォルト request・limit を設定してください。CPU、メモリ、PVC ストレージに必要な制約をそれぞれ確認してください。
- admission で適用される値と正常なワークロードの作成をテストしてください。ポリシーの追加で既存 Pod は自動変更されないため、別途確認してください。全体の使用量も制限する場合は ResourceQuota を設定してください。
例
mypod 名前空間が必要です。イメージのアドレスは実際の検証済みイメージに置き換えてください。CPU の 200m–800m は例示の範囲であり、デフォルト request・limit の実効値も確認してください。
変更前
yaml
apiVersion: v1
kind: Pod
metadata:
name: frontend
namespace: mypod
spec:
containers:
- name: app
image: images.my-company.example/app:v4
この Pod のリソース値や LimitRange は示していません。名前空間の既存ポリシーも確認する必要があります。
変更後
yaml
apiVersion: v1
kind: LimitRange
metadata:
name: cpu-min-max-demo-lr
namespace: mypod
spec:
limits:
- type: Container
min:
cpu: "200m"
max:
cpu: "800m"
---
apiVersion: v1
kind: Pod
metadata:
name: frontend
namespace: mypod
spec:
containers:
- name: app
image: images.my-company.example/app:v4
コンテナーの CPU 範囲だけを定める LimitRange を追加します。メモリや PVC ストレージの制約も設定する例ではありません。