Namespaces et Quotas 18 min de lecture

ResourceQuotas et LimitRanges

ResourceQuota

Les ResourceQuotas limitent la consommation totale de ressources dans un namespace.

apiVersion: v1
kind: ResourceQuota
metadata:
  name: dev-quota
  namespace: dev
spec:
  hard:
    requests.cpu: "10"
    requests.memory: 20Gi
    limits.cpu: "20"
    limits.memory: 40Gi
    pods: "50"
    services: "10"

Verifier les quotas

kubectl get resourcequota -n dev
kubectl describe resourcequota dev-quota -n dev

LimitRange

Les LimitRanges definissent des limites par defaut et min/max pour les Pods et conteneurs.

apiVersion: v1
kind: LimitRange
metadata:
  name: dev-limits
  namespace: dev
spec:
  limits:
  - max:
      cpu: "2"
      memory: 4Gi
    min:
      cpu: 100m
      memory: 128Mi
    default:
      cpu: 500m
      memory: 512Mi
    defaultRequest:
      cpu: 200m
      memory: 256Mi
    type: Container

Requests vs Limits

  • requests : Ressources garanties (scheduler)
  • limits : Ressources maximales (OOM killer)
resources:
  requests:
    cpu: 200m
    memory: 256Mi
  limits:
    cpu: 500m
    memory: 512Mi
Best practice : Definissez toujours requests et limits pour eviter qu'un Pod consomme toutes les ressources du nœud.