Kubernetes
8 min de lecture

Comment allouer des ressources à vos applications

Guide complet pour comprendre et configurer l'allocation des ressources CPU et mémoire dans vos applications Kubernetes avec les bonnes pratiques.

Arthur Zinck
Arthur Zinck
Expert DevOps Kubernetes & Cloud

La Mémoire

Allocation

La mémoire, une fois allouée à un processus ou conteneur, ne peut pas être récupérée par le noyau. Le processus stocke ses résultats de calcul, fichiers et ressources nécessaires dans cet espace mémoire. Un processus ne peut pas perdre une partie de sa mémoire et continuer à fonctionner correctement.

Paramétrage

Il est recommandé de définir les limits mémoire égales aux requests. Si un node manque de mémoire, le processus sera le premier à être tué par kubelet pour libérer la mémoire.

Le CPU

Allocation

Le CPU est plus flexible et peut être récupéré sans nécessairement tuer un processus. Le CPU est une ressource partagée, divisée en tranches de temps. Le Completely Fair Scheduler (CFS) divise le temps en périodes de 100ms. Chaque processus se voit allouer un quota de temps CPU dans cette période.

Paramétrage

La meilleure pratique est de spécifier les requests et d’éviter de définir des limits. Les limits CPU s’appliquent par période de 100ms.

Exemple de configuration :

resources:
  requests:
    cpu: "1"
  limits:
    cpu: "1"

CPU Throttling

Sur une machine single-core, cela équivaut à 100% du temps CPU. Sur une machine multi-core, c’est divisé proportionnellement. Le throttling peut impacter les performances, même si ce n’est pas toujours visible dans le monitoring.

Métriques Utiles

  • container_cpu_cfs_throttled_seconds_total
  • container_cpu_cfs_periods_total

TLDR

  • Mémoire : requests égales aux limits
  • CPU : utiliser les requests, éviter les limits

Meme Kubernetes Optimization

Quand tu réalises que le CPU throttling sabotait tes performances en silence depuis tout ce temps 😅

Points clés à retenir

  • Mémoire : requests = limits toujours (protection contre OOMKilled)
  • CPU : spécifier les requests, éviter les limits (prévention du throttling)
  • CPU throttling invisible dans monitoring standard mais impacte performances
  • CFS divise le temps CPU en périodes de 100ms avec quotas par processus
  • Métriques essentielles : container_cpu_cfs_throttled_seconds_total
kubernetes ressources optimisation monitoring

Partager cet article

Twitter LinkedIn