kubernetes

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


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


Solution

  • 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.