Meilleures pratiques Kubernetes. ArrĂȘt correct Terminate

Meilleures pratiques Kubernetes. Création de petits conteneurs
Meilleures pratiques Kubernetes. Organisation de Kubernetes avec des espaces de noms
Les développeurs de Xenoblade Chronicles: Definitive Edition dans le dernier numéro du magazine Weekly Famitsu.
Meilleures pratiques Kubernetes. Configuration des demandes et des limites de ressources

Meilleures pratiques Kubernetes. ArrĂȘt correct Terminate

Un Ă©lĂ©ment crucial dans le fonctionnement des systĂšmes distribuĂ©s est la gestion des pannes. Kubernetes facilite cela en utilisant des contrĂŽleurs qui surveillent l'Ă©tat de votre systĂšme et redĂ©marrent les services qui ont cessĂ© de fonctionner. Cependant, Kubernetes peut Ă©galement forcer l'arrĂȘt de vos applications pour garantir la viabilitĂ© globale du systĂšme. Dans cette sĂ©rie, nous examinerons comment aider Kubernetes Ă  accomplir son travail plus efficacement et Ă  rĂ©duire le temps d'arrĂȘt des applications.

Avant l'adoption des conteneurs, la plupart des applications fonctionnaient sur des machines virtuelles ou physiques. Si une application échouait ou se bloquait, il fallait beaucoup de temps pour terminer la tùche en cours et redémarrer le programme. Dans le pire des cas, quelqu'un devait résoudre ce problÚme manuellement pendant la nuit, à des heures peu pratiques. Si une tùche importante était exécutée sur seulement 1 ou 2 machines, une telle panne était totalement inacceptable.
C'est pourquoi, au lieu d'un redémarrage manuel, on a commencé à utiliser la surveillance au niveau des processus pour redémarrer automatiquement l'application en cas de plantage. Si le programme échouait, le processus de surveillance saisissait le code de sortie et redémarrait le serveur. Avec l'apparition de systÚmes comme Kubernetes, ce type de réponse aux pannes a simplement été intégré dans l'infrastructure.

Kubernetes utilise une boucle d'Ă©vĂ©nements « observation – correction des diffĂ©rences – action » pour s'assurer que les ressources restent opĂ©rationnelles en passant des conteneurs aux nƓuds eux-mĂȘmes.

Meilleures pratiques Kubernetes. ArrĂȘt correct Terminate

Cela signifie que vous n'avez plus besoin de lancer manuellement la surveillance des processus. Si une ressource Ă©choue Ă  passer le contrĂŽle de santĂ©, Kubernetes lui fournira simplement automatiquement un remplacement. ParallĂšlement, Kubernetes fait beaucoup plus que simplement surveiller les pannes de vos applications. Il peut crĂ©er plus de copies de l'application pour fonctionner sur plusieurs machines, mettre Ă  jour l'application ou exĂ©cuter plusieurs versions de votre application en mĂȘme temps.
Il existe donc de nombreuses raisons pour lesquelles Kubernetes peut interrompre un conteneur parfaitement sain. Par exemple, si vous mettez Ă  jour votre dĂ©ploiement, Kubernetes arrĂȘtera lentement les anciennes pods tout en lançant de nouvelles. Si vous arrĂȘtez un nƓud, Kubernetes mettra fin Ă  tous les pods sur ce nƓud. Enfin, si un nƓud manque de ressources, Kubernetes dĂ©sactivera tous les pods pour libĂ©rer ces ressources.

Il est donc trĂšs important que votre application se termine avec un impact minimal sur l'utilisateur final et un temps de rĂ©cupĂ©ration rĂ©duit. Cela signifie qu'avant de s'arrĂȘter, elle doit sauvegarder toutes les donnĂ©es nĂ©cessaires, fermer toutes les connexions rĂ©seau, terminer le travail restant et effectuer d'autres tĂąches urgentes.

En pratique, cela signifie que votre application doit ĂȘtre capable de gĂ©rer le message SIGTERM – le signal d'arrĂȘt du processus qui est le signal par dĂ©faut de l'utilitaire kill dans les systĂšmes d'exploitation de la famille Unix. Lorsqu'elle reçoit ce message, l'application doit s'arrĂȘter.

AprĂšs que Kubernetes ait dĂ©cidĂ© de terminer un pod, une sĂ©rie d'Ă©vĂ©nements se produit. Examinons chaque Ă©tape que Kubernetes suit lors de l'arrĂȘt d'un conteneur ou d'un pod.

Supposons que nous voulions terminer l'un des pods. À ce moment-lĂ , il cessera de recevoir un nouveau trafic – les conteneurs en cours d'exĂ©cution dans le pod ne seront pas affectĂ©s, mais tout nouveau trafic sera bloquĂ©.

Meilleures pratiques Kubernetes. ArrĂȘt correct Terminate

Examinons le hook preStop – c'est une commande spĂ©ciale ou une requĂȘte HTTP envoyĂ©e aux conteneurs dans le pod. Si votre application ne s'arrĂȘte pas correctement en recevant SIGTERM, vous pouvez utiliser preStop pour effectuer un arrĂȘt appropriĂ©.

Meilleures pratiques Kubernetes. ArrĂȘt correct Terminate

La plupart des programmes terminent correctement leur exĂ©cution lorsqu'ils reçoivent le signal SIGTERM, mais si vous utilisez un code tiers ou un systĂšme que vous ne pouvez pas contrĂŽler entiĂšrement, le hook preStop est un excellent moyen d'appeler un arrĂȘt Ă©lĂ©gant sans modifier l'application.

AprĂšs l'exĂ©cution de ce hook, Kubernetes enverra un signal SIGTERM aux conteneurs du pod, les informant qu'ils vont bientĂŽt ĂȘtre arrĂȘtĂ©s. À rĂ©ception de ce signal, votre code passera au processus de dĂ©sactivation. Ce processus peut inclure l'arrĂȘt de toute connexion persistante, comme une connexion Ă  une base de donnĂ©es ou un flux WebSocket, la sauvegarde de l'Ă©tat actuel, etc.

MĂȘme si vous utilisez un hook preStop, il est trĂšs important de vĂ©rifier ce qui se passe dans votre application lorsque vous lui envoyez un signal SIGTERM, comment elle se comporte afin que les Ă©vĂ©nements ou les changements de fonctionnement systĂšme entraĂźnĂ©s par l'arrĂȘt du pod ne vous surprennent pas.

À ce stade, avant de prendre d'autres mesures, Kubernetes attendra pendant une durĂ©e spĂ©cifiĂ©e, appelĂ©e terminationGracePeriodSecond, ou pĂ©riode de dĂ©sactivation gracieuse Ă  la rĂ©ception du signal SIGTERM.

Meilleures pratiques Kubernetes. ArrĂȘt correct Terminate

Par dĂ©faut, cette pĂ©riode est de 30 secondes. Il est important de noter qu'elle se dĂ©roule en parallĂšle avec le hook preStop et le signal SIGTERM. Kubernetes n'attendra pas la fin du hook preStop et du SIGTERM — si votre application se termine avant la fin de la pĂ©riode de terminationGracePeriod, Kubernetes passera immĂ©diatement Ă  l'Ă©tape suivante. Donc, vĂ©rifiez que la valeur de cette pĂ©riode en secondes n'est pas infĂ©rieure au temps requis pour un arrĂȘt correct du pod, et si elle dĂ©passe 30s, augmentez-la au besoin dans le YAML. Dans l'exemple donnĂ©, elle est de 60s.

Enfin, la derniĂšre Ă©tape — si les conteneurs continuent de fonctionner aprĂšs la terminationGracePeriod, ils enverront un signal SIGKILL et seront systĂ©matiquement supprimĂ©s. À ce moment, Kubernetes nettoiera Ă©galement tous les autres objets du pod.

Meilleures pratiques Kubernetes. ArrĂȘt correct Terminate

Kubernetes arrĂȘte les pods pour de nombreuses raisons, donc assurez-vous que dans tous les cas, votre application se termine correctement afin d'assurer le bon fonctionnement du service.

Meilleures pratiques Kubernetes. Mappage des services externes

Lire la vidéo

Un peu de publicitĂ© 🙂

Merci de rester avec nous. Aimez-vous nos articles ? Voulez-vous voir plus de contenu intĂ©ressant ? Soutenez-nous en passants une commande ou en nous recommandant Ă  des amis, VPS cloud pour dĂ©veloppeurs Ă  partir de 4,99 $, un Ă©quivalent unique des serveurs d'entrĂ©e de gamme, conçu pour vous : Toute la vĂ©ritĂ© sur le VPS (KVM) E5-2697 v3 (6 cƓurs) 10 Go DDR4 480 Go SSD 1 Gbps Ă  partir de 19 $ ou comment bien diviser un serveur ? (options disponibles avec RAID1 et RAID10, jusqu'Ă  24 cƓurs et jusqu'Ă  40 Go DDR4).

Dell R730xd deux fois moins cher dans le data center Equinix Tier IV Ă  Amsterdam ? Uniquement chez nous 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64Go DDR4 4x960Go SSD 1Gbps 100 To Ă  partir de 199 $ aux Pays-Bas ! Dell R420 — 2x E5-2430 2.2GHz 6C 128Go DDR3 2x960Go SSD 1Gbps 100To — Ă  partir de 99 $ ! Lisez sur Comment construire une infrastructure de classe entreprise avec des serveurs Dell R730xd E5-2650 v4 coĂ»tant 9000 euros pour des clopinettes ?

Source : habr.com

Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster