Eine ResourceQuota ist ein Kubernetes-Objekt, das die insgesamt nutzbaren Ressourcen eines Namespace begrenzt. Administratoren legen damit fest, wie viel CPU und Arbeitsspeicher alle Pods zusammen höchstens anfordern dürfen – und wie viele Objekte einer Art im Namespace entstehen dürfen.

Aufbau einer ResourceQuota

Das Objekt gehört zur API-Gruppe v1 und definiert eine hard-Liste mit Limits:

apiVersion: v1
kind: ResourceQuota
metadata:
  name: dev-quota
  namespace: dev
spec:
  hard:
    requests.cpu: "4"
    requests.memory: 8Gi
    limits.cpu: "8"
    limits.memory: 16Gi
    pods: "20"
    persistentvolumeclaims: "5"

Häufige Ressourcen-Namen sind requests.cpu, requests.memory, limits.cpu, limits.memory sowie die Zähl-Limits pods, services, configmaps oder count/deployments.apps. Für Speicher gilt requests.storage beziehungsweise persistentvolumeclaims.

Wirkung im Betrieb

  • Sobald eine Quota für CPU oder RAM aktiv ist, muss jeder neue Pod requests oder limits setzen – sonst lehnt der Admission-Controller die Erstellung ab.
  • Überschreitet ein neues Objekt ein hartes Limit, wird die Anfrage mit einer Fehlermeldung abgewiesen; bereits laufende Pods bleiben unberührt.
  • Den aktuellen Verbrauch zeigt kubectl describe resourcequota dev-quota -n dev – dort stehen hard (Limit) und used (Verbrauch) nebeneinander.

Abgrenzung zu verwandten Konzepten

Während die ResourceQuota das Gesamtbudget eines Namespace deckelt, setzt die Kubernetes LimitRange Grenzen und Standardwerte für einzelne Container. Die Quota wirkt wie das Kontingent einer Abteilung, die LimitRange wie die Vorgaben für jedes einzelne Projekt darin.

Verwandte Grundlagen: Kubernetes, Kubernetes Deployment, Kubernetes PriorityClass.