Kubernetes 名前空間の LimitRange 設定の確認

名前空間内の個々のリソースに合う資源基準を定義してください。

説明

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 ストレージの制約も設定する例ではありません。

参考資料