コンテンツにスキップ

14. LimitRange / ResourceQuota

LimitRange、ResourceQuotaはともに使えるリソースの上限を定義する。

定義の場所 範囲 目的
Deployment PodとContainer1つあたりの下限上限 アプリケーションの適切な値の定義
LimitRange Namespace内のPodとContainer1つあたりの下限上限 開発者の書き忘れ・ミスを防ぐ
ResourceQuota Namespace全体の下限上限 Namespace全体が暴走しないようにする
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# アプリ側LimitRange
# Namespace内の個々のPod・コンテナのリソース範囲を定義する
# 開発者の書き忘れ・ミスを防ぐ
apiVersion: v1
kind: LimitRange
metadata:
  name: app-limit-range
  namespace: app
spec:
  limits:
    - type: Container
      default: # resources を書かない Pod へのデフォルト値
        cpu: "200m"
        memory: "256Mi"
      defaultRequest: # requests のデフォルト値
        cpu: "100m"
        memory: "128Mi"
      max: # 1コンテナの上限
        cpu: "1"
        memory: "1Gi"
      min: # 1コンテナの下限
        cpu: "10m"
        memory: "64Mi"
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# アプリ側ResourceQuota
# Namespace 全体で使えるリソースの上限を定義する
# Namespace 全体が暴走しないようにする
apiVersion: v1
kind: ResourceQuota
metadata:
  name: app-quota
  namespace: app
spec:
  hard:
    requests.cpu: "1" # Namespace 全体の requests 合計上限
    requests.memory: "1Gi"
    limits.cpu: "2" # Namespace 全体の limits 合計上限
    limits.memory: "2Gi"
    pods: "10" # Pod 数の上限