resourcesLa section resources définit les ressources CPU et mémoire allouées à un conteneur. Elle contient deux sous-sections : requests et limits.
resources:
requests: # Ressources garanties (minimum)
cpu: 100m
memory: 128Mi
limits: # Ressources maximales (plafond)
cpu: 500m
memory: 512Mi
resources:Cette clé indique le début de la section qui définit les ressources du conteneur.
requests:Les requests (demandes) définissent les ressources minimales garanties pour le conteneur.
Exemple :
Si un nœud a 2 CPU disponibles et que vous demandez cpu: 100m, Kubernetes sait qu’il reste 1900m (1.9 CPU) disponibles pour d’autres pods.
cpu: 100mm signifie millicores (millième de cœur CPU)100m = 0.1 CPU = 10% d’un cœur CPU1000m = 1 CPU complet100m = 0.1 CPU = 10% d'un cœur
500m = 0.5 CPU = 50% d'un cœur
1000m = 1 CPU = 100% d'un cœur (1 cœur complet)
2000m = 2 CPU = 2 cœurs complets
cpu: 100m # 0.1 CPU (notation millicores)
cpu: "0.1" # 0.1 CPU (notation décimale)
cpu: 1 # 1 CPU complet
cpu: "1.5" # 1.5 CPU
cpu: 100m :memory: 128MiMi signifie Mebibyte (1 Mi = 1024 Ki = 1,048,576 bytes)128Mi = 128 × 1,048,576 bytes ≈ 134 MBNotation binaire (base 1024) - Préférée dans Kubernetes :
Ki = Kibibyte = 1024 bytes
Mi = Mebibyte = 1024 Ki = 1,048,576 bytes
Gi = Gibibyte = 1024 Mi = 1,073,741,824 bytes
Ti = Tebibyte = 1024 Gi
Notation décimale (base 1000) :
k ou K = Kilobyte = 1000 bytes
M = Megabyte = 1000 K
G = Gigabyte = 1000 M
T = Terabyte = 1000 G
memory: 128Mi # 128 Mebibytes ≈ 134 MB
memory: 1Gi # 1 Gibibyte ≈ 1.07 GB
memory: 512Mi # 512 Mebibytes ≈ 537 MB
memory: 2Gi # 2 Gibibytes ≈ 2.15 GB
memory: 128Mi :limits:Les limits (limites) définissent les ressources maximales qu’un conteneur peut utiliser.
cpu: 500m (dans limits)requests:
cpu: 100m # Garantie : 10% d'un CPU
limits:
cpu: 500m # Maximum : 50% d'un CPU
Le conteneur peut burster entre 10% et 50% selon la disponibilité.
memory: 512Mi (dans limits)requests:
memory: 128Mi # Garantie : 128 Mi
limits:
memory: 512Mi # Maximum : 512 Mi (sera tué si dépassé)
Le conteneur peut utiliser entre 128 Mi et 512 Mi. Au-delà de 512 Mi, il sera terminé.
| Situation | Comportement |
|---|---|
| Utilisation < request (100m) | Normal |
| Utilisation entre request et limit (100m - 500m) | Normal, si CPU disponible |
| Utilisation = limit (500m) | Throttling (ralentissement) |
| Tentative > limit | Throttling forcé, jamais tué |
| Situation | Comportement |
|---|---|
| Utilisation < request (128Mi) | Normal |
| Utilisation entre request et limit (128Mi - 512Mi) | Normal |
| Utilisation = limit (512Mi) | Risque de terminaison |
| Utilisation > limit | OOMKilled - Pod redémarré |
resources:
requests:
cpu: 50m # 5% CPU garanti
memory: 64Mi # 64 Mi garantis
limits:
cpu: 200m # Max 20% CPU
memory: 256Mi # Max 256 Mi
resources:
requests:
cpu: 250m # 25% CPU garanti
memory: 512Mi # 512 Mi garantis
limits:
cpu: 1000m # Max 1 CPU complet
memory: 2Gi # Max 2 Gi
resources:
requests:
cpu: 1000m # 1 CPU complet garanti
memory: 2Gi # 2 Gi garantis
limits:
cpu: 4000m # Max 4 CPUs
memory: 8Gi # Max 8 Gi
resources:
requests:
cpu: 100m
memory: 128Mi
# Pas de limits - le conteneur peut tout consommer
Kubernetes classe les pods en 3 catégories selon leurs ressources :
# requests = limits
resources:
requests:
cpu: 500m
memory: 512Mi
limits:
cpu: 500m
memory: 512Mi
# requests < limits
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 500m
memory: 512Mi
# Pas de requests ni limits
resources: {}
# Voir l'utilisation actuelle des ressources
kubectl top pod <nom-du-pod>
# Voir les événements (OOMKilled, etc.)
kubectl describe pod <nom-du-pod>
# Logs si le pod a été tué
kubectl get events --sort-by='.lastTimestamp'
resources:
requests:
cpu: 100m # Garantit 10% d'un CPU
memory: 128Mi # Garantit 128 Mi de RAM
limits:
cpu: 500m # Limite à 50% d'un CPU (throttling au-delà)
memory: 512Mi # Limite à 512 Mi (OOMKill au-delà)
Cette configuration convient à une application web légère à moyenne qui :