/
Calculateur Kubernetes & Sizing Pod
Catégorie

Calculateur Kubernetes & Sizing Pod

Calculateur interactif de ressources Kubernetes (dimensionnement CPU et mémoire des pods) avec analyse et visualisation en temps réel côté client.

Moteur QoS
Réserves Cloud
Préréglages
Mode de fonctionnement

Profileur de charges de travail

CPU de référence
450m (0.45 cores)
Sélection rapide
Mémoire de référence
1,536 MiB (1.50 GiB)
Sélection rapide
Stratégie de QoS
Burstable
Ratio limite / requête CPU2.00x
Marge de limite mémoire+25%
Fournisseur Cloud
Pods maximum
CPU DaemonSet
Mémoire DaemonSet
Ressources requises par pod: 563m / 1,920Mi
6 Nombre de pods
Nœuds requis1nœudsm6i.xlarge
Requêtes du pod563m CPU1,920 MiB RAM
Classe QoS assignéeBurstableadj: 883
Coût mensuel estimé$140.16730 Heures par mois
Capacité allouable par nœud
4 vCPU / 16 GiB Raw
Répartition CPU (Total: 4000m)Allouable: 3670m (91.8%)
Kube-Reserved: 80mDaemonSet Overhead: 250mWorkload Pods: 3378mMarge disponible
kube-reserved (80m)DaemonSet (250m)Charge des pods (3378m)Marge disponible
Allocation de la mémoire (Total: 16384 MiB)Allouable: 13022 MiB (79.5%)
Kube-Reserved RAM: 2762MiBDaemonSet RAM: 600MiBWorkload RAM: 11520MiBMarge disponible
kube-reserved (2762 MiB)DaemonSet (600 MiB)Charge des pods (11520 MiB)Marge disponible
Diagnostics de dimensionnement
Goulot d'étranglementBalanced / Density Aligned
Statut CFSModerate (Burst headroom available)
Comportement d'évictionMedium (Protected up to request ceiling)
Statut d'exécution AST
Format de balise: VISUALIZER
Métrique principale
3.38 vCPU unitaire / 11.25 Gio RAM
6 Réplicas actifs
Efficacité / Capacité
92.0% Cœurs / 88.5% RAM unitaire
Balanced / Density Aligned
Rendement net
$140.16
1 nœuds de m6i.xlarge

Traitement côté client

Calcul haute performance exécuté intégralement dans la mémoire du navigateur.

Zéro transfert serveur

Toutes les données restent strictement locales, sans aucune communication externe.

Export prêt pour la production

Formats de sortie optimisés et directement exploitables pour vos déploiements.

Référence technique et guide d'architecture

Calculateur Kubernetes & Pod Sizing — Guide de référence

Calculateur interactif de ressources Kubernetes (dimensionnement CPU et mémoire des pods) avec analyse et visualisation en temps réel côté client.

Calculateur Kubernetes & Pod Sizing — Guide de référence — Architecture en mémoire côté client et flux de données
Calculateur Kubernetes & Pod Sizing — Guide de référence — Architecture en mémoire côté client et flux de données

Paramètres clés et contrôles

Consommation CPU de base du Pod (P95 en millicoeurs)Millicoeurs (mCPU) / vCPU décimal

Charge CPU soutenue au 95e centile (P95), échantillonnée sur une fenêtre d'observation Prometheus ou Datadog de 7 jours en trafic de production nominal, hors anomalies de démarrage à froid. Évaluée par rapport aux périodes de quota de 100 ms du Completely Fair Scheduler (CFS) de Linux.

Par défaut : 250m
Marge de sécurité et tampon de burst diurne (%)Pourcentage (%)

Marge dynamique de sécurité calculée selon la formule Request_CPU = Baseline_CPU * (1 + Headroom_Percent / 100). Les standards SRE en production recommandent une marge de 20 % à 30 % pour absorber les pics de trafic diurnes sans déclencher d'éviction de pod ni d'échec d'ordonnancement au niveau des nœuds.

Par défaut : 25%
Working Set mémoire de base du Pod (RSS + cache actif)Mébioctets (MiB) / Gibioctets (GiB)

Taille de l'ensemble résident actif (RSS) et mémoire non libérable extraite de la métrique Kubernetes container_memory_working_set_bytes. Distincte du cache de pages libérable, cette valeur établit le seuil de référence avant l'activation des contrôleurs de pression mémoire des cgroups v1/v2 sous Linux.

Par défaut : 512Mi
Classe de qualité de service (QoS) cible du PodNiveau de QoS Kubernetes (Guaranteed | Burstable | BestEffort)

Niveau de qualité de service régissant le score oom_score_adj du noyau Linux. Le niveau Guaranteed exige cpu.limits == cpu.requests ET memory.limits == memory.requests (oom_score_adj : -997 à -998, priorité d'éviction minimale) ; Burstable requiert requests < limits (oom_score_adj dynamique : 1000 - 1000 * mem_req / node_mem) ; BestEffort omet les deux (oom_score_adj : 1000, évincé en premier).

Par défaut : Burstable
Profil matériel des instances de nœuds WorkerType d'instance de calcul (vCPU / GiB RAM)

Spécification matérielle du serveur bare-metal ou de la machine virtuelle hôte (ex. AWS m6i.2xlarge avec 8 vCPU et 32 GiB de RAM, ou GCP n2-standard-8). Soumise aux déductions par paliers du cloud : Allocatable = Raw_Capacity - Kubelet_Reserved - System_Reserved - Eviction_Hard_Threshold (100 MiB).

Par défaut : 8 vCPU / 32 GiB RAM
Nombre de répliques horizontales du déploiementEntier (Pods / Cibles de mise à l'échelle)

Quantité cible de répliques pour la haute disponibilité et la redondance des domaines de panne en N+1 / N+2 entre zones de disponibilité. Détermine directement les dimensions de bin-packing sur les nœuds workers : Nodes_Needed = max(ceil(Total_CPU_Req / Allocatable_CPU), ceil(Total_Mem_Req / Allocatable_Mem), ceil(Total_Replicas / Effective_Max_Pods)).

Par défaut : 12

Conseils de pro et bonnes pratiques

Éliminer les dégradations de latence P99 en omettant les limites CPU CFS sur les runtimes multithreads

Définir 'resources.limits.cpu' active le mécanisme de quota du Completely Fair Scheduler de Linux (cpu.cfs_quota_us sur une fenêtre cpu.cfs_period_us de 100 ms). Les runtimes multithreads (goroutines Go, threads GC de la JVM, pools de workers Node.js) planifient les tâches simultanément sur tous les vCPU du nœud ; si 8 threads s'exécutent pendant 12,5 ms, ils consomment 100 ms de quota en seulement 13 ms de temps réel, forçant le noyau Linux à brider (throttling) l'ensemble du processus pendant les 87 ms restantes. Cela provoque des pics artificiels de latence P99 et des timeouts en amont, alors même que le nœud hôte ne tourne qu'à 20 % d'utilisation CPU. La bonne pratique SRE pour les microservices sensibles à la latence consiste à fixer des CPU requests généreuses correspondant au P95 + marge, à omettre les limites CPU, et à conserver des limites mémoire strictes pour prévenir les fuites de mémoire.

Appliquer les courbes par paliers pour le calcul de la mémoire Allocatable sur GKE/EKS

Ne calculez jamais la capacité d'un cluster à partir des spécifications matérielles brutes. Les fournisseurs cloud déduisent la capacité système selon une formule officielle par paliers : Reserved_RAM = 25 % de [0..4 GiB] + 20 % de [4..8 GiB] + 10 % de [8..16 GiB] + 6 % de [16..128 GiB] + 2 % au-delà de 128 GiB, complétée par un seuil fixe d'éviction matérielle de 100 MiB. Sur un nœud worker de 32 GiB (ex. AWS m6i.2xlarge ou GCP n2-standard-8), cela soustrait 25%(4) + 20%(4) + 10%(8) + 6%(16) + 0,1 GiB = 1,0 + 0,8 + 0,8 + 0,96 + 0,1 = 3,66 GiB, ne laissant que ~28,34 GiB de RAM Allocatable. Négliger ce calcul dans vos algorithmes de bin-packing génère des pods en attente (Pending) impossibles à planifier et des préemptions immédiates lors des montées en charge des nœuds.

Éviter la pénurie d'adresses IP MaxPods avec l'AWS VPC CNI en haute densité

Les besoins en nœuds de cluster sont fréquemment limités non pas par l'épuisement du CPU ou de la mémoire, mais par les restrictions d'interfaces réseau du CNI. Avec le plugin par défaut AWS VPC CNI, le nombre maximal de pods par instance EC2 est gouverné par les limites d'ENI : MaxPods = (ENIs - 1) * (IPv4_per_ENI - 1) + 2. Une instance m6i.large (2 vCPU, 8 GiB) ne supporte que 3 ENI avec 10 IP chacune, plafonnant strictement la densité à 29 pods, quelle que soit la légèreté de vos conteneurs. Lors du calcul du nombre de nœuds via Nodes_Needed = max(ceil(Total_CPU_Req / Allocatable_CPU), ceil(Total_Mem_Req / Allocatable_Mem), ceil(Total_Replicas / Effective_Max_Pods)), omettre ce plafond effectif de MaxPods laissera les nœuds à moitié vides en calcul tout en échouant à ordonnancer les répliques restantes.

Exploiter la classe QoS Guaranteed avec un oom_score_adj fixe pour protéger les bases de données stateful

En cas de saturation mémoire, l'Out-Of-Memory (OOM) Killer du noyau Linux évalue chaque processus via son fichier /proc/[pid]/oom_score. Kubernetes traduit les classes de QoS des pods en oom_score_adj : les pods Guaranteed (cpu.limits == cpu.requests ET memory.limits == memory.requests) reçoivent un score de -997 ou -998, ce qui les immunise quasiment contre l'éviction, à moins que le noyau lui-même ne manque de mémoire critique. Les pods Burstable obtiennent un score dynamique entre 2 et 999 calculé selon max(floor(1000 * mem_request / node_capacity), 1000 - 1000 * mem_request / node_capacity), tandis que les pods BestEffort sont verrouillés à 1000 (terminés instantanément). Configurez systématiquement PostgreSQL, Redis, Kafka et vos contrôleurs d'ingress en Guaranteed pour éviter les boucles de basculement en cascade lors d'une pénurie de mémoire sur les nœuds.

Bac à sable cryptographique dans le navigateur et déterminisme O(n) du bin-packing

Afin de préserver la confidentialité zero-trust de votre infrastructure, le dimensionnement des ressources et les simulations de bin-packing vectoriel multidimensionnel s'exécutent exclusivement au sein du runtime du navigateur côté client selon une complexité algorithmique First-Fit-Decreasing en O(n). La topologie des ressources du cluster, les définitions des pods et le nombre de répliques restent intégralement isolés dans la mémoire client, s'appuyant sur les primitives CSPRNG de la Web Crypto API native pour l'entropie de placement, sans aucune télémétrie côté serveur ni journalisation sortante, en stricte conformité avec les référentiels de confidentialité audités RFC et SOC 2 Type II.

Pièges courants et dépannage

⚠️Pods interrompus avec le code de sortie 137 (OOMKilled) alors que les métriques applicatives sont sous la limite

Le code de sortie 137 indique une terminaison par le signal SIGKILL (128 + 9). Cette divergence survient parce que les runtimes applicatifs (ex. le heap Node.js ou la mémoire runtime Go) mesurent la mémoire virtuelle ou le tas géré, alors que le contrôleur de mémoire cgroup v1/v2 du noyau Linux suit container_memory_working_set_bytes, qui intègre les fichiers projetés en mémoire (mmap), les caches de pages d'E/S actifs et les allocations natives hors tas applicatif. Dès que memory.current dépasse memory.max (limits.memory), le contrôleur cgroup déclenche immédiatement un arrêt OOM sans préavis à l'application. Solution : interrogez la métrique Prometheus 'container_memory_working_set_bytes{pod=...}' au lieu des métriques runtime internes de l'application ; majorez resources.limits.memory de 25 % à 35 % au-dessus du working set P95 observé, ou réajustez les descripteurs de fichiers mmap et les allocations natives des pools de threads.

⚠️Applications multithreads subissant de sévères pics de latence P99 malgré une faible utilisation CPU globale

Il s'agit du piège classique du bridage (throttling) par quota du Completely Fair Scheduler (CFS) sous Linux. Lorsque 'resources.limits.cpu' est configuré, le kubelet programme 'cpu.cfs_quota_us' sur la base d'une période de 100 000 µs (100 ms). Les applications multithreads (GC parallèle de la JVM Java, ordonnancement des goroutines Golang sur runtime.GOMAXPROCS, serveurs web multi-workers) mobilisent simultanément des threads sur tous les cœurs disponibles de l'hôte. Si un pod a une limite de 1000m (1 cœur = 100 ms de quota) sur un nœud à 8 cœurs, 8 threads actifs consommeront 100 ms de quota cumulé en seulement 12,5 ms de temps réel, contraignant le noyau Linux à brider tous les threads du conteneur pendant les 87,5 ms restantes de la période. Solution : inspectez la métrique Prometheus 'container_cpu_cfs_throttled_periods_total / container_cpu_cfs_periods_total' ; si le taux de bridage dépasse 5 %, supprimez purement et simplement 'resources.limits.cpu' ou portez la limite à 3x les requêtes, et ajustez les pools de threads du runtime (ex. GOMAXPROCS ou Java ActiveProcessorCount) pour qu'ils s'alignent rigoureusement sur les CPU requests du pod.

⚠️Répliques de déploiement bloquées en statut Pending avec '0/N nodes available: Insufficient cpu' malgré des nœuds inactifs

Les décisions d'ordonnancement des pods sous Kubernetes sont évaluées exclusivement par rapport aux 'requests' de ressources des pods, et NON en fonction de la consommation CPU réelle en temps réel. Si quatre pods demandant chacun 2000m de CPU sont placés sur un nœud de 8 vCPU, le nœud est réservé à 100 % pour le kube-scheduler, même si les conteneurs ne tournent actuellement qu'à 5 % d'utilisation. Un cinquième pod demandant 1000m sera rejeté et restera en état 'Pending'. De surcroît, les DaemonSets (ex. calico-node, aws-node, fluentbit, datadog) consomment une marge non allouable sur chaque nœud avant même que les pods applicatifs ne puissent être placés. Solution : exécutez 'kubectl describe node <nom>' pour analyser la section 'Allocated resources' ; redimensionnez les pods en abaissant les requêtes CPU à l'utilisation réelle P95 en régime stable + 20 % de marge afin de libérer les engagements auprès du planificateur, permettant ainsi au kube-scheduler de regrouper (bin-pack) les charges en attente sans provisionner inutilement de nouveaux nœuds cloud.

Foire aux questions (FAQ)

Comment calculer les requêtes et limites de CPU et de mémoire dans Kubernetes ?▼

Pour calculer les requêtes (requests) de CPU et de mémoire, déterminez la consommation stable au 95e centile (P95) via Prometheus ou Datadog sur une fenêtre de 7 jours. Définissez les requêtes au niveau du P95 majoré d'une marge de 20 % à 30 % (Request = P95 * 1,25) afin d'absorber les variations diurnes de charge sans provoquer d'évictions par l'ordonnanceur. Pour les limites de mémoire, fixez un plafond supérieur de 20 % à 30 % par rapport à la requête pour tolérer les extensions passagères du tas (heap) et les tampons de fichiers mappés en mémoire (mmap) avant d'atteindre le seuil memory.max des cgroups Linux. Concernant les limites CPU, la bonne pratique de l'industrie pour les microservices sensibles à la latence recommande de fixer les limites à 2x ou 3x les requêtes, voire de les omettre complètement afin d'éviter le bridage par quota du Completely Fair Scheduler (CFS) de Linux, tout en associant cette absence de limite à l'autoscaling du cluster et à des plafonds stricts sur la mémoire (QoS Guaranteed).

Quelle est la différence entre les classes de QoS Guaranteed et Burstable dans Kubernetes ?▼

La QoS Guaranteed impose que les requêtes et les limites de CPU et de mémoire soient rigoureusement identiques (cpu.limits == cpu.requests ET memory.limits == memory.requests) sur l'ensemble des conteneurs du pod, attribuant une valeur oom_score_adj de -997 à -998 pour une quasi-immunité contre la pénurie de mémoire sur le nœud. La QoS Burstable s'applique lorsque les requêtes sont strictement inférieures aux limites ou lorsque les limites CPU sont omises, générant un oom_score_adj calculé dynamiquement entre 2 et 999. Lors d'une saturation de mémoire sur le nœud hôte, le kubelet et l'OOM Killer de Linux suppriment en premier lieu les pods BestEffort (oom_score_adj : 1000), puis les pods Burstable dépassant leurs requêtes mémoire, et en dernier recours absolu les pods Guaranteed.

Faut-il systématiquement définir des limites CPU sur les pods Kubernetes en production ?▼

Non, imposer des limites CPU s'avère fréquemment contre-productif pour les microservices multithreads. La définition de 'resources.limits.cpu' force le Completely Fair Scheduler du noyau Linux à appliquer des quotas stricts en millisecondes (cpu.cfs_quota_us) sur des cycles de 100 ms. Lorsque des environnements d'exécution multithreads (Go, Java, pools de workers Node.js) répartissent des rafales de traitement sur plusieurs cœurs de l'hôte, ils épuisent le quota alloué en 10 à 20 ms, contraignant le noyau à geler l'exécution pendant les 80 à 90 ms restantes. Cela engendre des pics artificiels de latence P99 et des ruptures de connexion, alors même que le nœud hôte reste inoccupé à 60 %. Les architectures de production performantes appliquent généralement des CPU requests généreuses, s'abstiennent de définir des CPU limits, et verrouillent des limites mémoire strictes pour écarter tout risque de cascade OOM.

Pourquoi les pods Kubernetes échouent-ils avec le code d'erreur Exit Code 137 OOMKilled ?▼

Le code d'arrêt 137 signale la destruction d'un processus par le signal Linux SIGKILL (128 + 9 = 137) émis par l'Out-Of-Memory Killer. Ce comportement se produit dans deux cas de figure distincts : 1) Le dépassement de la limite cgroup au niveau du conteneur, où container_memory_working_set_bytes franchit le seuil 'resources.limits.memory', provoquant la terminaison immédiate du conteneur fautif par le contrôleur cgroup du noyau ; ou 2) La saturation de la mémoire vive du nœud hôte, où la RAM physique chute sous le seuil d'éviction dure du kubelet (100 MiB par défaut), incitant l'OOM Killer du système d'exploitation à cibler et détruire les pods affichant le score oom_score_adj le plus élevé (en priorité BestEffort, puis Burstable excédant leurs allocations).

Quelle quantité de CPU et de mémoire Kubernetes réserve-t-il pour le système d'exploitation du nœud ?▼

Les fournisseurs de services cloud sanctuarisent la capacité système via des barèmes par paliers kube-reserved et system-reserved. Sur AWS EKS et GCP GKE, la réservation mémoire obéit à une courbe officielle dégressive : 25 % des 4 premiers GiB, 20 % des 4 GiB suivants (de 4 à 8 GiB), 10 % des 8 GiB suivants (de 8 à 16 GiB), 6 % des 112 GiB suivants (de 16 à 128 GiB), et 2 % de la mémoire excédant 128 GiB, auxquels s'ajoute un seuil dur d'éviction obligatoire de 100 MiB. Côté CPU, les retenues soustraient approximativement 6 % du premier cœur, 1 % du deuxième, 0,5 % des troisième et quatrième cœurs, et 0,25 % pour chaque cœur supplémentaire au-delà de 4, garantissant ainsi l'intégrité opérationnelle du noyau Linux, de systemd et des démons du kubelet.

Comment calculer le nombre de nœuds workers nécessaires pour un cluster Kubernetes ?▼

Estimez le parc total de nœuds requis par bin-packing vectoriel multidimensionnel : Nodes_Needed = max(ceil(Total_Pod_CPU_Req / Allocatable_Node_CPU), ceil(Total_Pod_Mem_Req / Allocatable_Node_Mem), ceil(Total_Replicas / Effective_Max_Pods)). Déduisez d'abord les réservations cloud par paliers et l'empreinte des DaemonSets de la configuration matérielle brute pour établir la capacité réelle 'Allocatable'. Additionnez ensuite l'ensemble des requêtes de vos répliques de pods. Enfin, déterminez si le dimensionnement du cluster est contraint par le CPU, la mémoire ou les plafonds de densité d'adresses IP imposés par le CNI (ex. limites ENI de l'AWS VPC CNI), puis arrondissez à l'entier supérieur pour préserver la haute disponibilité en N+1.

Outils et utilitaires connexes

Tous les outils →
Calculateur de Séries Géométriques (Terme n & Somme)Mathematics

Calculez le n-ième terme, la somme partielle finie et la somme infinie de toute suite géométrique avec diagnostic de convergence et tableau des termes.

Ouvrir l'outil→
Formule de Wilson (EOQ) & Coût du Stockfinance

Calculez la quantité économique de commande (EOQ / formule de Wilson), la taille de lot optimale et les coûts annuels de possession du stock. Optimisez vos dépenses de réapprovisionnement grâce au point de commande et aux remises sur volume.

Ouvrir l'outil→
Calculateur de Dunk & Détente Verticalehealth

Calculateur biomécanique déterminant la détente verticale exacte requise pour dunker sur un arceau réglementaire de 3,05 m selon votre portée bras levé, la prise du ballon, l'abaissement bilatéral des épaules et la marge de sécurité, avec temps de suspension, vitesse d'appel et puissance de crête (formule de Sayers).

Ouvrir l'outil→
Calcul Eau de Coulage & Pâte (DDT)culinary

Calculez la température exacte de l'eau de coulage selon les formules DDT à 3 et 4 facteurs, le fractionnement en glace pilée et l'étalonnage de friction du pétrin.

Ouvrir l'outil→
Calculateur de Coniques & Tracémath

Calculateur et traceur de sections coniques. Résolvez les équations générales et réduites d'ellipses, paraboles et hyperboles : foyers, directrice, sommets et étapes détaillées.

Ouvrir l'outil→
Hauteur d'Arbre (Clinomètre & Pente)Utilitaire

Calculez la hauteur totale d'un arbre à l'aide de visées clinométriques et de la distance oblique. Ajustez selon la hauteur des yeux, la pente, le houppier et les zones de sécurité d'abattage.

Ouvrir l'outil→