✦ For everyone, free.

Practical knowledge for real and everyday life

Home

Kubernetes Resource Policy Definition

Kubernetes Resource Policy Definition sets rules for managing and allocating cluster resources efficiently and securely.

Kubernetes Resource Policy Definition is the precise characterization of the formal mechanisms, resource requests and limits at the container level, and ResourceQuota and LimitRange at the namespace level, through which the cluster constrains and governs how much CPU, memory, and other measurable resources workloads may consume, distinct from the resource values themselves, which merely describe a single container's needs. Resource policy is the layer that turns individually declared resource values into cluster-wide, enforceable constraints on aggregate and per-object consumption.


Formal Container-Level Declarations

requests and limits

A container's resources.requests formally declares the minimum resource amount the scheduler must find available on a candidate node before placing the Pod there; resources.limits formally declares the maximum amount the kubelet and container runtime will allow that container to consume at runtime, enforced independently of the scheduling decision.

requests actual usage limits
resources:
  requests:
    cpu: "250m"
    memory: "256Mi"
  limits:
    cpu: "500m"
    memory: "512Mi"

Derived Quality of Service Class

A Pod's Quality of Service (QoS) class is formally derived, not independently set, from the relationship between its containers' requests and limits: Guaranteed when every container specifies equal requests and limits for every resource; Burstable when at least one request is specified but the Guaranteed condition is not met; BestEffort when no requests or limits are specified at all.

QoS = f ( requests , limits ) , not independently declared

Namespace-Level Resource Policy

ResourceQuota

A ResourceQuota formally constrains the aggregate sum of resource requests and limits, and optionally the count of objects of a given type, across every object within a single namespace; any create or update request that would cause the namespace's total to exceed a defined quota is formally rejected by admission control.

apiVersion: v1
kind: ResourceQuota
metadata:
  name: codartium-team-quota
  namespace: codartium-team
spec:
  hard:
    requests.cpu: "20"
    requests.memory: 40Gi
    limits.cpu: "40"
    pods: "50"
o namespace requests ( o ) quota

LimitRange

A LimitRange formally supplies default, minimum, and maximum resource values applied per-container or per-Pod within a namespace, ensuring that objects submitted without explicit requests or limits are assigned sensible values automatically rather than being admitted as unconstrained.

apiVersion: v1
kind: LimitRange
metadata:
  name: codartium-defaults
  namespace: codartium-team
spec:
  limits:
    - type: Container
      default:
        cpu: "500m"
        memory: "512Mi"
      defaultRequest:
        cpu: "100m"
        memory: "128Mi"
      max:
        cpu: "2"
        memory: "2Gi"

Formal Enforcement Points

Admission-Time Enforcement

ResourceQuota and LimitRange are formally enforced during admission control, at object creation or update time, rejecting requests that would violate the defined constraints before they are ever persisted; they do not act on already-existing objects retroactively.

Runtime Enforcement

Container-level limits are formally enforced by the kubelet and container runtime at execution time, through operating-system cgroup mechanisms, independent of and downstream from any admission-time check that already validated the declared values against namespace policy.

kubectl describe resourcequota codartium-team-quota -n codartium-team
kubectl describe limitrange codartium-defaults -n codartium-team

Formal Consequence for Node Capacity

Allocatable as the Scheduling Ceiling

A node's status.allocatable value formally represents the ceiling against which the scheduler sums Pod resource requests when determining feasibility; the sum of requests for all Pods scheduled to a node formally never exceeds that node's allocatable capacity, though actual usage, bounded instead by limits, may still fluctuate independently.

p node requests ( p ) allocatable ( node )

Why Resource Policy Is Layered This Way

Formally separating container-level declaration, requests and limits, from namespace-level governance, ResourceQuota and LimitRange, allows individual workload authors to state their own needs while cluster or platform operators independently bound the aggregate consequence of those declarations across a shared namespace, without either party needing authority over the other's specific configuration choices.