Contactez-nous

Gestion des ressources des conteneurs

Apprenez à maîtriser la gestion des ressources CPU et mémoire dans Kubernetes avec les requests et limits pour optimiser performance et stabilité.

Allouer efficacement : pourquoi la gestion des ressources est cruciale

Bienvenue dans le treizième chapitre, entièrement consacré à la gestion des ressources CPU et mémoire pour vos conteneurs dans Kubernetes. Jusqu'ici, nous avons vu comment déployer et connecter des applications, mais un aspect fondamental pour garantir leur bon fonctionnement et la stabilité globale du cluster est de contrôler précisément les ressources qu'elles consomment.

Dans un environnement partagé comme un cluster Kubernetes, les ressources matérielles (CPU, mémoire) sont finies. Sans mécanismes de contrôle, une application gourmande ou défaillante pourrait monopoliser les ressources d'un noeud, impactant négativement les autres applications hébergées sur ce même noeud, voire le noeud lui-même. Une gestion rigoureuse des ressources est donc essentielle pour assurer la prévisibilité, la performance et l'équité entre les différentes charges de travail.

Ce chapitre vous donnera les clés pour comprendre et définir les besoins de vos applications, permettant à Kubernetes de prendre des décisions éclairées concernant l'ordonnancement des Pods et la gestion des ressources en cas de contention.

Explorer les outils de gestion : Requests, Limits et QoS

Nous allons commencer par le coeur du sujet : la définition des requêtes (requests) et des limites (limits) pour le CPU et la mémoire au niveau des conteneurs. Vous apprendrez la signification de chacun de ces paramètres, comment ils influencent l'ordonnancement (requests) et la gestion de l'exécution (limits), et comment choisir des valeurs appropriées.

Ensuite, nous explorerons comment Kubernetes utilise ces valeurs de requests et limits pour attribuer une Classe de Qualité de Service (QoS Class) à chaque Pod : Guaranteed, Burstable, ou BestEffort. Nous verrons l'impact de ces classes sur la priorité d'un Pod et sur son comportement en cas de manque de ressources sur le noeud (notamment lequel sera potentiellement 'tué' en premier en cas de pression mémoire).

Enfin, nous élargirons notre perspective au niveau du Namespace en introduisant les ResourceQuotas et les LimitRanges. Ces outils permettent aux administrateurs de cluster de définir des quotas globaux de ressources pour un namespace et de spécifier des contraintes par défaut ou des plages valides pour les requests et limits des Pods créés dans ce namespace, assurant ainsi une gestion administrative plus globale des ressources.