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
requestsoderlimitssetzen – 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 stehenhard(Limit) undused(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.