Égoutter sur SIGTERM, répondre à une sonde de préparation et faire fonctionner deux gousses

Featurekamo-login
Expédié
4 septembre 2026 à 20:39 UTC
Auteur
Kamo
Commite
4fe7bc1

Ensuite, SIGTERM avec un processus nu.exit(143), de sorte que chaque déploiement a sectionné n'importe quelle nacelle avait en vol - un poste de formulaire, une action serveur, une charge utile RSC en streaming, un téléchargement. Invisible lorsqu'il s'agit d'un demande a duré des millisecondes; pas invisible sur un cluster qui se déploie sur chaque poussée. scripts/standalone-entry.cjs enveloppe le serveur autonome: sur SIGTERM, il cesse d'accepter, les gouttes ne sont pas retournées keep-alives à la fois donc une gousse avec rien en vol sort encore dans environ une seconde, et laisse courir les demandes se terminent sous un plafond qui se trouve en dessous de la terminaisonGracePeriodSeconds. Porté de kmo-interne, qui le gère en production depuis des mois. Ce déploiement n'avait pas de sonde de préparation, donc une gousse comptée comme prête à être prête à l'instant son conteneur processus entamé. Avec maxUnavailable 0 Kubernetes dit que "la nouvelle dosette sert" et prend sa retraite l'ancienne - tandis que Next est encore en train de initialiser et n'a pas lié son port. Demandes débarquées Sur un port, rien n'écoutait, d'où provenait les 502 intermittents en déploiement. /api/sapi répond uniquement pour cette dosette et ne touche délibérément pas de backend: une sonde de préparation décide si cette nacelle quitte le Service, et le câbler à un backend transforme un blip dorsal en un Rehausser le redémarrage de chaque gousse ici. répliques de 1 à 2. L'état du serveur vit dans Redis, pas dans la gousse, et il n'y a pas de travail programmé à dupliquer, donc une seconde réplique ne change rien, sauf que la perte d'une nacelle cesse d'être une panne. Dans une réplique, une mort OOM, une sonde de vie en panne ou une fuite de nœuds a pris tout pour tant qu'il faut pour démarrer. topologieSpreadConstraints (ajoutés plus tôt, inertes jusqu'à présent) gardent les deux sur des noeuds différents où le cluster peut le gérer, et un PodDisruptionBudget dans KlusterServices fait attendre un drain.

Tous les changements

Comme ce que tu vois expédier ?

Chacune de ces mises à jour atterrit automatiquement dans votre espace de travail. Commencez gratuitement et regardez-le grandir semaine après semaine.

Commencez gratuitement pour toujoursPrix de visualisation