April 2026 • Container Orchestration • 5 min read

Deployment Strategy as the "Rules of the Game": How Kubernetes Replaces Your Old Code

The "Rules of the Game"

Every time you push a new version of your application to a Kubernetes cluster, you need a strategy to ensure the old code is seamlessly replaced by the new code. These strategies act as the Rules of the Game.

Here, we will break down a specific resource-constrained configuration (the "Tight Cluster"), compare it against the standard strategies available in Kubernetes natively, and explore advanced paradigms.

1. The "Tight Cluster" Strategy

In environments with heavy workloads—such as large AI models—where your nodes have virtually no spare CPU, a standard deployment can lead to "Insufficient CPU" errors. To solve this, we adjust the deployment strategy parameters.

strategy:
  type: RollingUpdate
  rollingUpdate:
    maxSurge: 0
    maxUnavailable: 1
  • maxSurge: 0: This tells Kubernetes: "Do not create any extra pods." Usually, Kubernetes tries to start the new pod before killing the old one (to avoid downtime). By setting this to 0, you force it to wait.
  • maxUnavailable: 1: This tells Kubernetes: "It is okay if 1 pod is offline during the update."

The Result

Because you have no extra CPU space on your nodes, Kubernetes intentionally kills the old pod first (releasing its CPU reservation), and then starts the new pod in that freshly emptied space.

  • PRO: Solves "Insufficient CPU" errors completely.
  • CON: If you only have 1 replica, you will experience a fleeting 10–30 seconds of downtime while the old pod stops and the new model loads.

2. The Two Main Kubernetes Strategies

Type A: RollingUpdate (The Default & Professional Choice)

This is the standard for modern web applications. It replaces pods incrementally, ensuring minimal disruption.

  • Default Behavior: Usually maxSurge: 25% and maxUnavailable: 25%.
  • Use Case: High-availability apps where you demand Zero Downtime.
  • Requirement: Your cluster must have enough "spare" capacity (CPU/RAM) to run a few extra pods during the transition.

Type B: Recreate (The "Clean Slate" Choice)

This is a brutal but sometimes necessary "Kill all, then Start all" approach.

  • Mechanism: It completely shuts down all version 1 pods, waits for them to terminate, and only then starts the version 2 pods.
  • Use Case (Singleton Apps): If your application (like a legacy database engine) cannot tolerate two versions running simultaneously without corrupting state.
  • Use Case (Resource Constrained): When the cluster is exceptionally small and absolutely cannot afford any surge.
  • Downside: Guaranteed total downtime during the swap.

3. Comparison & Use Cases

Strategy maxSurge maxUnavailable Downtime? Best For...
Standard Rolling 25% 25% None Web APIs, Frontends, Microservices.
Tight Rolling (The AI Setup) 0 1 Short Heavy AI Engines, tightly-packed clusters.
Recreate N/A N/A Longer Batch jobs, DB migrations, Singleton apps.

4. Advanced "Pro" Strategies (Argo Rollouts)

Standard Kubernetes natively supports only the strategies mentioned above. However, by introducing tools like Argo Rollouts (often paired with ArgoCD), you can implement "Next Level" robust release pipelines:

Blue/Green Deployments

You spin up a completely isolated second environment (Green). You test it thoroughly. Once validated, you flip a switch at the Service or Ingress layer to route all traffic there instantly.

  • Pro: Instant, zero-friction rollback.
  • Con: Temporarily consumes double the hardware resources (CPU/RAM) during the test phase.

Canary Deployments

You bleed exactly 10% of traffic to the new version while 90% stays on the old. Check the metrics. If there are no 500 errors, dial it up to 50%, then 100%.

  • Pro: Unquestionably the safest way to release code to production.

5. Best Practice Recommendations

  • For Heavy AI Engines: Stick to the maxSurge: 0 & maxUnavailable: 1 setup. Because your pods are heavy, trying to "surge" will predictably fail on saturated nodes unless you drastically autoscale your cluster.
  • For Small Web Apps: Use the default RollingUpdate (remove the maxSurge/maxUnavailable lines completely). The seamless cutover provides the best UX.
  • Always Use Probes: No matter your strategy, if you omit readinessProbes, Kubernetes assumes the new pod is "Ready" the millisecond the container process starts—even if your heavyweight AI model is still loading 5GB into RAM. This leads to dropped traffic.

Summary

If you're operating on a cluster that's almost full, the "Tight Cluster" (RollingUpdate with 0 surge) configuration is a thoroughly professional way to handle high-resource pods. It guarantees the "old" hardware reservation is physically deleted before the "new" reservation is demanded, safeguarding your cluster from frustrating sizing deadlocks.

Avril 2026 • Orchestration de Conteneurs • 5 min de lecture

Stratégie de Déploiement : Les "Règles du Jeu" de Kubernetes pour Remplacer Votre Code

Les "Règles du Jeu"

Chaque fois que vous poussez une nouvelle version de votre application sur un cluster Kubernetes, vous avez besoin d'une stratégie pour que l'ancien code soit remplacé de manière transparente. Ces stratégies sont les véritables Règles du Jeu.

Ici, nous détaillerons une configuration spécifique pour les contraintes de ressources (le "Tight Cluster"), la comparerons aux stratégies standards de Kubernetes et aborderons des paradigmes plus avancés.

1. La Stratégie du "Tight Cluster"

Dans les environnements avec de lourdes charges—comme de gros modèles IA—où vos nœuds n'ont pratiquement aucun CPU libre, un déploiement standard provoque des erreurs "Insufficient CPU". Pour contourner cela, nous ajustons les paramètres.

strategy:
  type: RollingUpdate
  rollingUpdate:
    maxSurge: 0
    maxUnavailable: 1
  • maxSurge: 0: Cela dit à Kubernetes: "Ne crée aucun pod supplémentaire." Habituellement, Kubernetes essaie de démarrer le nouveau avant de tuer l'ancien. À 0, on le force à attendre.
  • maxUnavailable: 1: Cela dit à Kubernetes: "Il est acceptable qu'1 pod soit hors ligne pendant la mise à jour."

Le Résultat

Comme vous n'avez pas d'espace CPU supplémentaire, Kubernetes tue intentionnellement l'ancien pod d'abord (libérant sa réservation CPU), puis démarre le nouveau dans cet espace fraîchement vidé.

  • POUR : Résout complètement les erreurs "Insufficient CPU".
  • CONTRE : S'il n'y a qu'un seul réplica, vous aurez une courte coupure de 10-30 secondes le temps que le nouveau modèle se charge.

2. Les Deux Stratégies Principales de Kubernetes

Type A : RollingUpdate (Le Choix par Défaut & Professionnel)

Le standard pour les applications web, remplaçant les pods progressivement.

  • Comportement : Généralement maxSurge: 25% et maxUnavailable: 25%.
  • Cas d'usage : Applications à haute disponibilité visant le "Zéro Temps d'Arrêt" (Zero Downtime).
  • Pré-requis : Le cluster doit avoir assez de capacité "CPU/RAM de réserve" pour faire tourner les pods supplémentaires.

Type B : Recreate (L'Approche "Table Rase")

Une approche plus agressive : "Tuer tout, puis Tout démarrer".

  • Mécanisme : Éteint totalement l'ancienne version, attend, et enclenche la version 2 une fois l'espace libéré.
  • Cas d'usage : Applications qui ne peuvent physiquement pas tolérer la coexistence de deux versions (par ex. pour l'intégrité d'une base de données).
  • Inconvénient : Une indisponibilité totale garantie le temps de la transition.

3. Stratégies "Pro" Avancées (Argo Rollouts)

Avec Kubernetes seul, on s'arrête là. Mais avec Argo Rollouts (souvent couplé à ArgoCD), on accède aux déploiements de "Niveau Supérieur" :

Blue/Green Deployments

Vous montez un deuxième environnement complet et isolé (Vert). Vous testez. Si tout va bien, basculez le trafic via le Service d'un coup.

  • Avantage : Rollback instantané.
  • Inconvénient : Requiert temporairement le double de ressources matérielles pendant le test.

Canary Deployments

Envoyez 10% du trafic vers la nouvelle version. Surveillez les métriques d'erreur. Si c'est ok, passez à 50%, puis 100%.

  • Avantage : Le moyen le plus sûr et progressif de libérer du code.

4. Recommandations de Bonnes Pratiques

  • Moteurs IA Lourds : Restez sur maxSurge: 0 et maxUnavailable: 1. Un "surge" échouera systématiquement à cause de la taille écrasante des conteneurs.
  • Petites Apps Web : Servez-vous du RollingUpdate classique (effacez maxSurge). Ce sera bien plus transparent pour l'utilisateur.
  • Utilisez les Probes : Peu importe votre stratégie, n'oubliez pas les readinessProbes ! Sans cela, Kubernetes enverra du trafic à une intelligence artificielle dont la RAM ou le modèle ne sont pas encore chargés.

En Résumé

Garder votre configuration actuelle "Tight Cluster" (RollingUpdate avec 0 surge) est la façon la plus mature de gérer des pods surdimensionnés sur un cluster quasi complet. Cela assure que l'ancienne allocation soit supprimée AVANT qu'une nouvelle ne soit requise, évitant que votre cluster ne se retrouve coincé.