In Kubernetes, what is the difference between ResourceQuota vs LimitRange objects

2/28/2019

Please explain the difference between ResourceQuota vs LimitRange objects in Kubernetes...?

-- Hafiz
kubernetes

1 Answer

2/28/2019

LimitRange and ResourceQuota are objects used to control resource usage by a Kubernetes cluster administrator.

ResourceQuota is for limiting the total resource consumption of a namespace, for example:

apiVersion: v1
kind: ResourceQuota
metadata:
  name: object-counts
spec:
  hard:
    configmaps: "10" 
    persistentvolumeclaims: "4" 
    replicationcontrollers: "20" 
    secrets: "10" 
    services: "10"

LimitRangeis for managing constraints at a pod and container level within the project.

apiVersion: "v1"
kind: "LimitRange"
metadata:
  name: "resource-limits" 
spec:
  limits:
    -
      type: "Pod"
      max:
        cpu: "2" 
        memory: "1Gi" 
      min:
        cpu: "200m" 
        memory: "6Mi" 
    -
      type: "Container"
      max:
        cpu: "2" 
        memory: "1Gi" 
      min:
        cpu: "100m" 
        memory: "4Mi" 
      default:
        cpu: "300m" 
        memory: "200Mi" 
      defaultRequest:
        cpu: "200m" 
        memory: "100Mi" 
      maxLimitRequestRatio:
        cpu: "10" 

An individual Pod or Container that requests resources outside of these LimitRange constraints will be rejected, whereas a ResourceQuota only applies to all of the namespace/project's objects in aggregate.

-- P Ackerman
Source: StackOverflow