
Il peut ĂȘtre difficile de gĂ©rer des systĂšmes distribuĂ©s en raison de la multitude d'Ă©lĂ©ments mobiles et changeants qui doivent tous fonctionner correctement pour assurer la fonctionnalitĂ© du systĂšme. Si l'un des Ă©lĂ©ments tombe en panne, le systĂšme doit ĂȘtre capable de le dĂ©tecter, de contourner le problĂšme et de le corriger, le tout de maniĂšre automatique. Dans cette sĂ©rie « Kubernetes Best Practices », nous allons dĂ©couvrir comment configurer les tests Readiness et Liveness pour vĂ©rifier la viabilitĂ© d'un cluster Kubernetes.
Le contrĂŽle de santĂ© Health Check est un moyen simple d'informer le systĂšme si une instance de votre application fonctionne ou non. Si l'instance de votre application ne fonctionne pas, d'autres services ne doivent pas s'y connecter ni lui envoyer de requĂȘtes. Au lieu de cela, la requĂȘte doit ĂȘtre envoyĂ©e Ă une autre instance de l'application qui est dĂ©jĂ en cours d'exĂ©cution ou qui sera lancĂ©e ultĂ©rieurement. De plus, le systĂšme doit restituer la capacitĂ© opĂ©rationnelle perdue de votre application.
Par dĂ©faut, Kubernetes commencera Ă diriger le trafic vers le pod lorsque tous les conteneurs Ă l'intĂ©rieur des pods seront lancĂ©s et redĂ©marrera les conteneurs lorsqu'ils Ă©choueront. Au dĂ©part, ce comportement par dĂ©faut peut ĂȘtre suffisant, mais vous pouvez amĂ©liorer la fiabilitĂ© de dĂ©ploiement de votre produit en utilisant des contrĂŽles de santĂ© personnalisĂ©s.

Heureusement, Kubernetes permet de le faire assez facilement, donc il n'y a aucune excuse pour ignorer de tels contrÎles. Kubernetes propose deux types de tests de contrÎle de santé, et il est important de comprendre les différences d'application de chacun.
Le test de readiness Readiness est conçu pour informer Kubernetes que votre application est prĂȘte Ă gĂ©rer le trafic. Avant de permettre au service d'envoyer du trafic au pod, Kubernetes doit s'assurer que le test de readiness a rĂ©ussi. Si le test de readiness Ă©choue, Kubernetes cessera d'envoyer du trafic au pod jusqu'Ă ce que le test rĂ©ussisse.
Le test de vivacité Liveness informe Kubernetes si votre application est vivante ou morte. Dans le premier cas, Kubernetes le laissera tranquille, dans le second, il supprimera le pod mort et le remplacera par un nouveau.
Imaginons un scĂ©nario oĂč votre application nĂ©cessite 1 minute pour « prĂ©chauffer » et se lancer. Votre service ne commencera pas Ă fonctionner tant que l'application n'est pas complĂštement chargĂ©e et lancĂ©e, mĂȘme si le flux de travail a dĂ©jĂ commencĂ©. De plus, vous rencontrerez Ă©galement des problĂšmes si vous souhaitez scaler ce dĂ©ploiement Ă plusieurs copies, car ces copies ne doivent pas recevoir de trafic tant qu'elles ne sont pas complĂštement prĂȘtes. Cependant, par dĂ©faut, Kubernetes commencera Ă envoyer du trafic immĂ©diatement aprĂšs le lancement des processus Ă l'intĂ©rieur du conteneur.
En utilisant le test de disponibilité Readiness, Kubernetes attendra que l'application soit complÚtement lancée avant de permettre au service d'envoyer du trafic vers la nouvelle copie.

Imaginons un autre scĂ©nario dans lequel l'application se fige pendant une longue pĂ©riode, cessant de rĂ©pondre aux requĂȘtes. Comme le processus continue Ă s'exĂ©cuter, Kubernetes considĂ©rera par dĂ©faut que tout va bien et continuera Ă envoyer des requĂȘtes au pod non fonctionnel. Mais avec Liveness, Kubernetes dĂ©tectera que l'application ne rĂ©pond plus aux requĂȘtes et redĂ©marrera par dĂ©faut le pod non fonctionnel.

Examinons comment sont testés la disponibilité et la viabilité. Il existe trois méthodes de test : HTTP, Command et TCP. Vous pouvez utiliser l'une d'elles pour la vérification. La méthode de test utilisateur la plus courante est le probe HTTP.
MĂȘme si votre application n'est pas un serveur HTTP, vous pouvez toujours crĂ©er un serveur HTTP lĂ©ger Ă l'intĂ©rieur de votre application pour interagir avec le test Liveness. AprĂšs cela, Kubernetes commencera Ă pinger le pod, et si la rĂ©ponse HTTP se situe dans la plage de 200 ou 300 ms, cela indiquera que le pod est « sain ». Sinon, le module sera marquĂ© comme « malade ».

Pour les tests avec Command, Kubernetes exĂ©cute une commande Ă l'intĂ©rieur de votre conteneur. Si la commande renvoie un code de sortie zĂ©ro, le conteneur sera marquĂ© comme sain, sinon, s'il obtient un code de sortie de 1 Ă 255, le conteneur sera marquĂ© comme « malade ». Cette mĂ©thode de test est utile si vous ne pouvez pas ou ne souhaitez pas exĂ©cuter un serveur HTTP, mais ĂȘtes capable d'exĂ©cuter une commande qui vĂ©rifiera la « santĂ© » de votre application.

Le dernier mĂ©canisme de vĂ©rification est le test TCP. Kubernetes tentera d'Ă©tablir une connexion TCP sur le port spĂ©cifiĂ©. Si cela rĂ©ussit, le conteneur est considĂ©rĂ© comme sain, sinon comme non fonctionnel. Cette mĂ©thode peut s'avĂ©rer utile si vous utilisez un scĂ©nario oĂč les tests par requĂȘte HTTP ou l'exĂ©cution de commandes fonctionnent mal. Par exemple, les principaux services pour la vĂ©rification via TCP seront gRPC ou FTP.

Les tests peuvent ĂȘtre configurĂ©s de plusieurs maniĂšres avec diffĂ©rents paramĂštres. Vous pouvez indiquer la frĂ©quence d'exĂ©cution, les seuils de rĂ©ussite et d'Ă©chec, et combien de temps attendre les rĂ©ponses. Des informations plus dĂ©taillĂ©es sont fournies dans la documentation des tests Readiness et Liveness. Cependant, il y a un point trĂšs important dans la configuration du test Liveness â le dĂ©lai initial de configuration du test initialDelaySeconds. Comme je l'ai mentionnĂ©, l'Ă©chec de ce test entraĂźnera le redĂ©marrage du module. Par consĂ©quent, vous devez vous assurer que le test ne commence pas tant que l'application n'est pas prĂȘte, sinon elle commencera Ă redĂ©marrer en boucle. Je recommande d'utiliser le temps de dĂ©marrage P99 ou le temps de dĂ©marrage moyen de l'application Ă partir du buffer. N'oubliez pas d'ajuster cette valeur Ă mesure que le temps de dĂ©marrage de votre application devient plus rapide ou plus lent.
La plupart des spécialistes confirmeront que les vérifications de santé sont indispensables pour tout systÚme distribué, et Kubernetes ne fait pas exception. L'utilisation de la vérification de « santé » des services garantit un fonctionnement fiable et sans faille de Kubernetes et ne pose aucun problÚme pour les utilisateurs.
La suite arrivera trĂšs bientĂŽtâŠ

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, , un Ă©quivalent unique des serveurs d'entrĂ©e de gamme, conçu pour vous : (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 aux Pays-Bas ! Dell R420 â 2x E5-2430 2.2GHz 6C 128Go DDR3 2x960Go SSD 1Gbps 100To â Ă partir de 99 $ ! Lisez sur
Source : habr.com
