Cloud et infrastructure

Kubernetes v1.34 active le swap sur les nœuds pour une densité accrue des charges de travail IA

La version 1.34 de Kubernetes rend la fonctionnalité de swap sur les nœuds disponible en version générale (GA), permettant aux clusters d'utiliser des SSD NVMe rapides pour paginer la mémoire inactive et augmenter significativement la densité de pods pour les

Illustration de pages mémoire se déplaçant des modules RAM vers un lecteur SSD rapide.
Illustration générée pour cet article

Traduit automatiquement depuis l'original anglais.

Le support par Kubernetes de l'exécution de nœuds avec le swap activé est désormais disponible en version générale (General Availability) dans la version 1.34. Cette mise à jour permet aux opérateurs de cluster d'utiliser un stockage local rapide pour gérer les débordements de mémoire, répondant ainsi à un goulot d'étranglement critique pour les charges de travail modernes d'IA agentique qui restent souvent inactives tout en consommant de grandes quantités de RAM.

Ce qui s'est passé

La capacité mémoire est fréquemment la première limite dure rencontrée dans les clusters Kubernetes. Les nœuds épuisent souvent leur RAM physique bien avant que les ressources CPU ne soient pleinement utilisées. Cette contrainte est devenue plus aiguë avec l'essor des charges de travail d'IA agentique, qui nécessitent des empreintes mémoire substantielles pour initialiser et exécuter du code non fiable. Après cette rafale initiale d'activité, ces agents entrent souvent dans de longues périodes d'inactivité en attendant les prompts utilisateurs. Maintenir cet état dormant dans une RAM physique coûteuse limite le nombre de pods qu'un seul nœud peut héberger, augmentant ainsi les coûts d'infrastructure.

La sortie de Kubernetes v1.34 change cette dynamique en supportant officiellement le swap sur les nœuds. En permettant au noyau Linux de paginer la mémoire anonyme vers le disque, le swap agit comme un tampon lors des pics de trafic ou des périodes de surabonnement mémoire important. Adossé à des disques à semi-conducteurs (SSD) NVMe haute vitesse, cette approche permet aux nœuds de décharger les pages mémoire dormantes et de regrouper considérablement plus de pods sur chaque machine. Les benchmarks indiquent que cette méthode peut offrir des gains de densité jusqu'à trois fois, souvent avec un impact minimal sur la latence.

Historiquement, le swap était déconseillé dans les environnements Kubernetes pour deux raisons principales. Premièrement, la comptabilité mémoire sous cgroup v1 traitait la mémoire et le swap comme une limite combinée, rendant difficile l'isolation et la prévision de l'utilisation réelle de la mémoire d'un conteneur. Deuxièmement, la pagination vers des disques durs traditionnels introduisait de sévères pénalités de latence. Le nouveau support repose sur cgroup v2, qui fournit une comptabilité séparée du swap, et s'associe à un stockage NVMe rapide pour atténuer les problèmes de latence, rendant la fonctionnalité pratique pour une utilisation en production.

Comment cela fonctionne

Le swap sur les nœuds fonctionne en permettant au système d'exploitation de déplacer les pages mémoire inactives de la RAM vers un espace d'échange désigné sur le disque. Dans Kubernetes v1.34, cela est géré via la configuration du kubelet. Les opérateurs définissent failSwapOn sur false et spécifient le swapBehavior comme LimitedSwap. Cette configuration indique au nœud d'utiliser le swap uniquement lorsque nécessaire, plutôt que de s'appuyer dessus comme mémoire principale.

L'efficacité de ce mécanisme dépend fortement de la vitesse du stockage sous-jacent. En acheminant le swap vers des Local SSDs, les temps d'attente I/O associés à la pagination sont radicalement réduits. Cette configuration fonctionne mieux avec les classes de Qualité de Service (QoS) Burstable, où les limites mémoire des conteneurs sont définies plus hautes que les demandes. Le nœud rationne alors automatiquement l'espace de swap basé sur l'utilisation de la mémoire des applications inactives, gardant les processus actifs dans la RAM physique rapide tout en déplaçant les données dormantes vers le disque.

Détails clés

  • Kubernetes v1.34 marque la disponibilité générale (GA) du support du swap sur les nœuds.
  • La fonctionnalité nécessite cgroup v2 pour une comptabilité et une isolation indépendantes du swap.
  • Les benchmarks montrent une réduction de 50 % de l'empreinte RAM pour les builds du noyau Linux, passant de 600 Mo à 300 Mo.
  • Les pods Chrome headless utilisant gVisor ont vu une augmentation de densité de 100 %, passant de 80 à 160 pods concurrents.
  • Les sandbox Python isolés ont atteint une amélioration de densité de 200 %, passant de 80 à 240 sessions concurrentes.
  • L'augmentation de la latence à la densité maximale est principalement due à la concurrence CPU plutôt qu'aux E/S du swap.

Pourquoi c'est important

Pour les ingénieurs construisant des plateformes pour des agents IA ou des pipelines CI/CD, ce développement offre une voie directe pour réduire les coûts d'infrastructure. Les charges de travail agentiques sont intrinsèquement irrégulières ; elles connaissent des pics lors de l'initialisation et de l'exécution du code, puis restent inactives. Sans swap, les opérateurs doivent provisionner assez de RAM pour gérer le pic, laissant la plupart de cette mémoire gaspillée pendant les périodes d'inactivité. Le swap sur les nœuds permet aux équipes de dimensionner correctement les demandes mémoire pour l'utilisation active tout en utilisant l'espace disque comme assurance contre les pics.

Cela impacte également les architectures de sécurité. Les environnements d'exécution sécurisés comme gVisor ou Kata Containers ajoutent une surcharge mémoire due aux exigences d'isolation. Auparavant, cette surcharge limitait strictement la densité de pods. Avec le swap sur les nœuds, le coût mémoire supplémentaire de ces runtimes sécurisés peut être paginé lorsqu'il n'est pas activement utilisé. Cela signifie que les équipes peuvent maintenir des frontières de sécurité strictes pour le code non fiable sans sacrifier les avantages économiques de la planification à haute densité.

Ce que vous pouvez faire

  • Mettez à niveau vos clusters Kubernetes vers la version 1.34 ou ultérieure pour accéder aux fonctionnalités GA de swap sur les nœuds.
  • Configurez kubelet avec failSwapOn: false et memorySwap.swapBehavior: LimitedSwap.
  • Assurez-vous que vos nœuds sont équipés de Local SSDs NVMe rapides pour minimiser la latence du swap.
  • Définissez les limites mémoire des conteneurs plus hautes que les demandes pour activer le comportement QoS Burstable.
  • Effectuez des benchmarks sur vos charges de travail spécifiques pour déterminer le ratio optimal entre RAM et espace de swap.
  • Surveillez la contention CPU à haute densité, car elle devient le principal goulot d'étranglement avant les E/S du swap.

Outils de la Boutique Bytechap

Continuer la lecture

Tous les articles