{"id":38965,"date":"2019-10-31T22:27:03","date_gmt":"2019-10-31T19:27:03","guid":{"rendered":"https:\/\/prohoster.info\/blog\/liveness-probes-v-kubernetes-mogut-byt-opasny\/"},"modified":"2019-10-31T22:27:03","modified_gmt":"2019-10-31T19:27:03","slug":"liveness-probes-v-kubernetes-mogut-byt-opasny","status":"publish","type":"post","link":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/liveness-probes-v-kubernetes-mogut-byt-opasny","title":{"rendered":"Les liveness probes dans Kubernetes peuvent \u00eatre dangereuses.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i><b>Note de traduction.<\/b>: L'ing\u00e9nieur principal de Zalando, Henning Jacobs, a souvent remarqu\u00e9 que les utilisateurs de Kubernetes \u00e9prouvaient des difficult\u00e9s \u00e0 comprendre la fonction des liveness (et readiness) probes et leur application correcte. Il a donc rassembl\u00e9 ses r\u00e9flexions dans cette note concise qui, avec le temps, fera partie de la documentation K8s.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Les liveness probes dans Kubernetes peuvent \u00eatre dangereuses.\" src=\"\/wp-content\/uploads\/2019\/10\/b246e18dadd582889382f306508135a8.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLes v\u00e9rifications d'\u00e9tat, connues sous le nom de <i>liveness probes<\/i> <i>(c'est-\u00e0-dire, litt\u00e9ralement, \u00ab tests de viabilit\u00e9 \u00bb \u2014 note du traducteur)<\/i>, peuvent \u00eatre tr\u00e8s dangereuses. Je recommande de les \u00e9viter autant que possible : les exceptions ne se pr\u00e9sentent que dans les cas o\u00f9 elles sont r\u00e9ellement n\u00e9cessaires et o\u00f9 vous comprenez parfaitement leurs sp\u00e9cificit\u00e9s et cons\u00e9quences. Cet article traite des v\u00e9rifications liveness et readiness, ainsi que des cas dans lesquels <i>est plac\u00e9<\/i> et il ne faut pas les appliquer.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Mon coll\u00e8gue Sandor a r\u00e9cemment partag\u00e9 sur Twitter les erreurs les plus courantes qu'il rencontre, notamment celles li\u00e9es \u00e0 l'utilisation des probes de readiness\/liveness :<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/sszuecs\/status\/1175377157343907840\"><img decoding=\"async\" alt=\"Les liveness probes dans Kubernetes peuvent \u00eatre dangereuses.\" src=\"\/wp-content\/uploads\/2019\/10\/8bc2e834e77e2b51baf06d2465a97b4f.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>Un param\u00e9trage incorrect de la <code>livenessProbe<\/code> peut aggraver les situations de forte charge (d\u00e9couplage en avalanche + red\u00e9marrage potentiellement long du conteneur\/application) et entra\u00eener d'autres cons\u00e9quences n\u00e9gatives telles que la chute des d\u00e9pendances <i>(voir aussi <noindex><a rel=\"nofollow\" href=\"https:\/\/srcco.de\/posts\/k3s-outage-traefik-acme-lets-encrypt-local-path.html\">mon r\u00e9cent article<\/a><\/noindex> sur la limitation du nombre de requ\u00eates dans le cadre de K3s+ACME)<\/i>. Pire encore, lorsque le probe de liveness est associ\u00e9 \u00e0 une v\u00e9rification de sant\u00e9 d'une d\u00e9pendance (health check), qui est une base de donn\u00e9es externe : <b>un seul \u00e9chec de la BDD red\u00e9marrera tous vos conteneurs<\/b>!<\/p>\n<p>Le message principal <i>\u00ab N'utilisez pas les liveness probes \u00bb<\/i> dans ce cas ne sert pas \u00e0 grand-chose, donc examinons \u00e0 quoi servent les v\u00e9rifications readiness et liveness. <\/p>\n<p><i>Remarque : la majeure partie du test ci-dessous a d'abord \u00e9t\u00e9 incluse dans la documentation interne pour les d\u00e9veloppeurs de Zalando.<\/i><\/p>\n<h2>Les v\u00e9rifications Readiness et Liveness<\/h2>\n<p>\nKubernetes fournit deux m\u00e9canismes importants, appel\u00e9s <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/tasks\/configure-pod-container\/configure-liveness-readiness-probes\/\">liveness probes et readiness probes<\/a><\/noindex>. Elles effectuent p\u00e9riodiquement une action \u2014 par exemple, en envoyant une requ\u00eate HTTP, en \u00e9tablissant une connexion TCP ou en ex\u00e9cutant une commande dans le conteneur \u2014 pour confirmer que l'application fonctionne correctement.<\/p>\n<p>Kubernetes utilise <b>readiness probes<\/b>, pour comprendre quand le conteneur est pr\u00eat \u00e0 recevoir du trafic. Un pod est consid\u00e9r\u00e9 comme op\u00e9rationnel lorsque tous ses conteneurs sont pr\u00eats. Une des applications de ce m\u00e9canisme est de contr\u00f4ler quels pods sont utilis\u00e9s comme backends pour les services Kubernetes (et en particulier Ingress).<\/p>\n<p><b>Contr\u00f4les de vivacit\u00e9<\/b> aident Kubernetes \u00e0 d\u00e9terminer quand il est temps de red\u00e9marrer un conteneur. Par exemple, un tel contr\u00f4le permet de saisir un deadlock lorsque l'application se \"bloque\". Le red\u00e9marrage du conteneur dans cet \u00e9tat permet de d\u00e9bloquer l'application malgr\u00e9 les erreurs, bien qu'il puisse \u00e9galement entra\u00eener des d\u00e9faillances en cascade (voir ci-dessous).<\/p>\n<p>Si vous essayez de d\u00e9ployer une mise \u00e0 jour de l'application qui \u00e9choue aux contr\u00f4les de vivacit\u00e9\/de readiness, son d\u00e9ploiement sera bloqu\u00e9, car Kubernetes attendra le statut <code>Pr\u00eat<\/code> de tous les pods.<\/p>\n<h2>Exemple<\/h2>\n<p>\nVoici un exemple de readiness probe v\u00e9rifiant le chemin <code>\/health<\/code> via HTTP avec des param\u00e8tres par d\u00e9faut (<i>interval<\/i>: 10 secondes, <i>timeout<\/i>: 1 seconde, <i>success threshold<\/i>: 1, <i>failure threshold<\/i>: 3):<\/p>\n<pre><code class=\"plaintext\"># \u0447\u0430\u0441\u0442\u044c \u043e\u0431\u0449\u0435\u0433\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f deployment'\u0430\/\u0441\u0442\u0435\u043a\u0430\npodTemplate:\n  spec:\n    containers:\n    - name: my-container\n      # ...\n      readinessProbe:\n        httpGet:\n          path: \/health\n          port: 8080<\/code><\/pre>\n<p><\/p>\n<h2>Recommandations<\/h2>\n<p><\/p>\n<ol>\n<li> Pour les microservices avec un endpoint HTTP (REST, etc.) <b>d\u00e9finissez toujours un readiness probe<\/b>, qui v\u00e9rifie si l'application (pod) est pr\u00eate \u00e0 recevoir du trafic.<\/li>\n<li> Assurez-vous que le readiness probe <b>couvre la disponibilit\u00e9 du port r\u00e9el du serveur web<\/b>:\n<ul>\n<li> en utilisant des ports pour des besoins administratifs, appel\u00e9s \u00ab admin \u00bb ou \u00ab management \u00bb (par exemple, 9090), pour <code>readinessProbe<\/code>, assurez-vous que l\u2019endpoint renvoie OK uniquement lorsque le port HTTP principal (comme 8080) est pr\u00eat \u00e0 recevoir du trafic*;\n<p><i>* Je suis au courant d'au moins un cas chez Zalando o\u00f9 cela ne s'est pas produit, c'est-\u00e0-dire <code>readinessProbe<\/code> le port \u00ab management \u00bb a \u00e9t\u00e9 v\u00e9rifi\u00e9, mais le serveur lui-m\u00eame n'a pas d\u00e9marr\u00e9 en raison de probl\u00e8mes de chargement du cache.<\/i><\/li>\n<li> l'ajout d'un probe de readiness sur un port distinct peut entra\u00eener le fait que la surcharge sur le port principal ne soit pas refl\u00e9t\u00e9e dans la v\u00e9rification de sant\u00e9 (c'est-\u00e0-dire que le pool de threads sur le serveur est plein, mais la v\u00e9rification de sant\u00e9 indique toujours que tout va bien).<\/li>\n<\/ul>\n<\/li>\n<li> Assurez-vous que <b>le readiness probe inclut l'initialisation\/migration de la base de donn\u00e9es<\/b>;\n<ul>\n<li> le moyen le plus simple d'y parvenir est de contacter le serveur HTTP uniquement apr\u00e8s la fin de l'initialisation (par exemple, la migration de la base de donn\u00e9es avec <noindex><a rel=\"nofollow\" href=\"https:\/\/flywaydb.org\/\">Flyway<\/a><\/noindex> etc. ; c'est-\u00e0-dire qu'au lieu de modifier l'\u00e9tat de la v\u00e9rification de sant\u00e9, il suffit de ne pas lancer le serveur web jusqu'\u00e0 ce que la migration de la base de donn\u00e9es soit termin\u00e9e*.\n<p><i>* Il est \u00e9galement possible d'ex\u00e9cuter des migrations de base de donn\u00e9es \u00e0 partir de conteneurs init \u00e0 l'ext\u00e9rieur du pod. Je reste un fervent d\u00e9fenseur des applications autonomes (self-contained), c'est-\u00e0-dire celles dans lesquelles le conteneur de l'application sait, sans coordination externe, comment amener la base de donn\u00e9es \u00e0 l'\u00e9tat requis.<\/i><\/li>\n<\/ul>\n<\/li>\n<li> Windows VPS pour le travail \u00e0 distance <code>httpGet<\/code> pour les v\u00e9rifications de readiness via des endpoints typiques des v\u00e9rifications de sant\u00e9 (par exemple, <code>\/health<\/code>).<\/li>\n<li> <b>Familiarisez-vous avec les param\u00e8tres de contr\u00f4le d\u00e9finis par d\u00e9faut<\/b> (<code>interval: 10s<\/code>, <code>timeout: 1s<\/code>, <code>successThreshold: 1<\/code>, <code>failureThreshold: 3<\/code>):\n<ul>\n<li> Les param\u00e8tres par d\u00e9faut signifient que le pod deviendra <i>non pr\u00eat<\/i> dans environ 30 secondes (apr\u00e8s 3 \u00e9checs de v\u00e9rification de la disponibilit\u00e9).<\/li>\n<\/ul>\n<\/li>\n<li> Utilisez un port distinct pour \u00ab admin \u00bb ou \u00ab management \u00bb, si la pile technologique (par exemple, Java\/Spring) le permet, afin de s\u00e9parer la gestion de la \u00ab sant\u00e9 \u00bb et des m\u00e9triques du trafic habituel :\n<ul>\n<li> mais n'oubliez pas le point 2.<\/li>\n<\/ul>\n<\/li>\n<li> Si n\u00e9cessaire, la v\u00e9rification de disponibilit\u00e9 peut \u00eatre utilis\u00e9e pour le pr\u00e9chauffage \/ le chargement du cache et renvoyer le code d'\u00e9tat 503 tant que le conteneur n'est pas \u00ab pr\u00eat \u00bb :\n<ul>\n<li> je vous recommande \u00e9galement de vous familiariser avec la nouvelle v\u00e9rification <code>startupProbe<\/code>, <noindex><a rel=\"nofollow\" href=\"https:\/\/sysdig.com\/blog\/whats-new-kubernetes-1-16\/\">introduite dans la version 1.16<\/a><\/noindex> <i>(nous en avons parl\u00e9 en russe <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/467477\/\">ici<\/a><\/noindex> \u2014 n.d.t.)<\/i>.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p><\/p>\n<h2>Avertissements<\/h2>\n<p><\/p>\n<ol>\n<li> <b>Ne comptez pas sur des d\u00e9pendances externes<\/b> (comme les bases de donn\u00e9es) lors des tests de disponibilit\u00e9 \/ vivacit\u00e9 - cela peut entra\u00eener des d\u00e9faillances en cascade :\n<ul>\n<li> Prenons par exemple un service stateful REST avec 10 pods, d\u00e9pendant d'une base de donn\u00e9es Postgres : lorsque la v\u00e9rification d\u00e9pend d'une connexion active \u00e0 la base de donn\u00e9es, tous les 10 pods peuvent tomber si un retard survient dans le r\u00e9seau\/du c\u00f4t\u00e9 de la base de donn\u00e9es - en g\u00e9n\u00e9ral, cela se termine souvent plus mal que pr\u00e9vu ;<\/li>\n<li> notez que Spring Data v\u00e9rifie par d\u00e9faut la connexion \u00e0 la base de donn\u00e9es * ;\n<p><i>* C'est le comportement par d\u00e9faut de Spring Data Redis (du moins, c'\u00e9tait le cas lors de ma derni\u00e8re v\u00e9rification), ce qui a conduit \u00e0 une panne \u00ab catastrophique \u00bb : lorsque Redis \u00e9tait temporairement indisponible, tous les pods \u00ab sont tomb\u00e9s \u00bb.<\/i><\/li>\n<li> Dans ce sens, \u00ab externe \u00bb peut \u00e9galement signifier d'autres pods de la m\u00eame application, c'est-\u00e0-dire qu'id\u00e9alement, la v\u00e9rification ne devrait pas d\u00e9pendre de l'\u00e9tat des autres pods du m\u00eame cluster pour \u00e9viter des pannes en cascade :\n<ul>\n<li> les r\u00e9sultats peuvent varier pour les applications avec un \u00e9tat distribu\u00e9 (par exemple, le cache en m\u00e9moire dans les pods).<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li> <b>N'utilisez pas la v\u00e9rification de vivacit\u00e9<\/b> pour les pods (les exceptions \u00e9tant les cas o\u00f9 ils sont vraiment n\u00e9cessaires et o\u00f9 vous comprenez pleinement les sp\u00e9cificit\u00e9s et les cons\u00e9quences de leur utilisation) :\n<ul>\n<li> le liveness probe peut aider \u00e0 r\u00e9cup\u00e9rer des conteneurs \u00ab suspendus \u00bb, mais, comme vous avez un contr\u00f4le total sur votre application, des choses comme des processus \u00ab suspendus \u00bb et des blocages ne devraient id\u00e9alement pas se produire : la meilleure alternative est de provoquer intentionnellement l'\u00e9chec de l'application et de la ramener \u00e0 son \u00e9tat stable pr\u00e9c\u00e9dent ;<\/li>\n<li> Un \u00e9chec de la v\u00e9rification de l'\u00e9tat de vie entra\u00eenera le red\u00e9marrage du conteneur, aggravant ainsi potentiellement les cons\u00e9quences des erreurs li\u00e9es au d\u00e9marrage : le red\u00e9marrage du conteneur provoquera des temps d'arr\u00eat (au moins pendant la dur\u00e9e de d\u00e9marrage de l'application, disons, pendant plus de 30 secondes), entra\u00eenant de nouvelles erreurs, augmentant la charge sur d'autres conteneurs et augmentant le risque d'\u00e9chec de ceux-ci, etc.<\/li>\n<li> Les v\u00e9rifications de l'\u00e9tat de vie combin\u00e9es \u00e0 une d\u00e9pendance externe repr\u00e9sentent la pire des combinaisons possibles, mena\u00e7ant de d\u00e9clencher des pannes en cascade : un l\u00e9ger retard du c\u00f4t\u00e9 de la base de donn\u00e9es entra\u00eenera le red\u00e9marrage de tous vos conteneurs !<\/li>\n<\/ul>\n<\/li>\n<li> Les param\u00e8tres de v\u00e9rification de l'\u00e9tat de vie et de disponibilit\u00e9 <b>doivent \u00eatre diff\u00e9rents<\/b>:\n<ul>\n<li> vous pouvez utiliser le liveness probe avec la m\u00eame v\u00e9rification de l'\u00e9tat, mais avec un seuil de d\u00e9clenchement plus \u00e9lev\u00e9 (<code>failureThreshold<\/code>), par exemple, attribuer le statut <i>non pr\u00eat<\/i> apr\u00e8s 3 tentatives et consid\u00e9rer que la v\u00e9rification de l'\u00e9tat de vie a \u00e9chou\u00e9 apr\u00e8s 10 tentatives ;<\/li>\n<\/ul>\n<\/li>\n<li> <b>N'utilisez pas de v\u00e9rifications exec<\/b>, car elles entra\u00eenent des probl\u00e8mes connus conduisant \u00e0 l'apparition de processus zombies :\n<ul>\n<li> d\u00e9tails : voir <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=QKI-JRs2RIE\">la pr\u00e9sentation des experts de Datadog<\/a><\/noindex>.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p><\/p>\n<h2>R\u00e9sum\u00e9<\/h2>\n<p><\/p>\n<ul>\n<li> Utilisez des v\u00e9rifications de disponibilit\u00e9 pour d\u00e9terminer quand le pod est pr\u00eat \u00e0 recevoir du trafic.<\/li>\n<li> Utilisez les v\u00e9rifications de l'\u00e9tat de vie uniquement lorsque cela est vraiment n\u00e9cessaire.<\/li>\n<li> Une utilisation incorrecte des v\u00e9rifications de disponibilit\u00e9\/l'\u00e9tat de vie peut entra\u00eener une diminution de la disponibilit\u00e9 et des \u00e9checs en cascade.<\/li>\n<\/ul>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/sszuecs\/status\/1175655221382529025\"><img decoding=\"async\" alt=\"Les liveness probes dans Kubernetes peuvent \u00eatre dangereuses.\" src=\"\/wp-content\/uploads\/2019\/10\/8c212c41d6e69cd515a85d2b6100aaed.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<h2>Ressources suppl\u00e9mentaires sur le sujet<\/h2>\n<p><\/p>\n<ul>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/tasks\/configure-pod-container\/configure-liveness-readiness-probes\/\">Documentation Kubernetes : Configurer les v\u00e9rifications de l'\u00e9tat de vie et de disponibilit\u00e9<\/a><\/noindex>;<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/blog.colinbreck.com\/kubernetes-liveness-and-readiness-probes-revisited-how-to-avoid-shooting-yourself-in-the-other-foot\/\">V\u00e9rifications de l'\u00e9tat de vie et de disponibilit\u00e9 Kubernetes revues : Comment \u00e9viter de se tirer une balle dans le pied<\/a><\/noindex>;<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/keepingitclassless.net\/2018\/12\/december-4-nre-labs-outage-post-mortem\/\">Analyse post-mortem de la panne des NRE Labs<\/a><\/noindex> (parle \u00e9galement de l'\u00e9tat de vie).<\/li>\n<\/ul>\n<p><\/p>\n<h2>Mise \u00e0 jour n\u00b0 1 du 29-09-2019<\/h2>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/BarrWill1\/status\/1178144162526453760\">Sur les conteneurs init pour la migration de la base de donn\u00e9es<\/a><\/noindex>: une note de bas de page a \u00e9t\u00e9 ajout\u00e9e.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/ejc3\/status\/1178077779293683713\">EJ m'a rappel\u00e9<\/a><\/noindex> \u00e0 propos du PDB : un des probl\u00e8mes des v\u00e9rifications de liveness est le manque de coordination entre les pods. Dans Kubernetes, il existe <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/tasks\/run-application\/configure-pdb\/\">des budgets de perturbation des pods (PDB)<\/a><\/noindex> pour limiter le nombre d'\u00e9checs parall\u00e8les qu'une application peut subir, cependant, les v\u00e9rifications ne tiennent pas compte du PDB. Id\u00e9alement, nous pourrions ordonner \u00e0 K8s : \"Red\u00e9marre un pod s'il \u00e9choue sa v\u00e9rification, mais ne les red\u00e9marre pas tous, pour ne pas empirer les choses.\"<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/bboreham\/status\/1178083887991398400\">Bryan a bien formul\u00e9<\/a><\/noindex>: \"Utilisez la v\u00e9rification de l'\u00e9tat de vie lorsque vous savez \u00e0 coup s\u00fbr que <b>la meilleure chose \u00e0 faire est de \"tuer\" l'application<\/b>\" (encore une fois, il ne faut pas trop en faire).<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/bboreham\/status\/1178207929540972544\"><img decoding=\"async\" alt=\"Les liveness probes dans Kubernetes peuvent \u00eatre dangereuses.\" src=\"\/wp-content\/uploads\/2019\/10\/524122a63bd4acd950bf9fc8aeeb45be.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<h2>Mise \u00e0 jour n\u00b0 2 du 29-09-2019<\/h2>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/Guillaume_Swiss\/status\/1178258781152563200\">Concernant la lecture de la documentation avant utilisation<\/a><\/noindex>: j'ai cr\u00e9\u00e9 une demande de fonctionnalit\u00e9 (<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes\/website\/issues\/16607\">demande de fonctionnalit\u00e9<\/a><\/noindex>) pour compl\u00e9ter la documentation sur les v\u00e9rifications de l'\u00e9tat de vie.<\/p>\n<h2>P.S. de l'auteur<\/h2>\n<p>\nLisez aussi dans notre blog :<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/415393\/\">Kubernetes : la vie d'un pod<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/425085\/\">7 meilleures pratiques d'exploitation des conteneurs selon Google<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/353272\/\">7 principes de conception d'applications bas\u00e9es sur des conteneurs<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>Source : <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/470958\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432.: \u0412\u0435\u0434\u0443\u0449\u0438\u0439 \u0438\u043d\u0436\u0435\u043d\u0435\u0440 \u0438\u0437 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Zalando \u2014 Henning Jacobs \u2014 \u043d\u0435 \u0440\u0430\u0437 \u0437\u0430\u043c\u0435\u0447\u0430\u043b \u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 Kubernetes \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0432 \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0438 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f liveness (\u0438 readiness) probes \u0438 \u0438\u0445 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f. \u041f\u043e\u0441\u0435\u043c\u0443 \u043e\u043d \u0441\u043e\u0431\u0440\u0430\u043b \u0441\u0432\u043e\u0438 \u043c\u044b\u0441\u043b\u0438 \u0432 \u044d\u0442\u0443 \u0451\u043c\u043a\u0443\u044e \u0437\u0430\u043c\u0435\u0442\u043a\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u0441\u0442\u0430\u043d\u0435\u0442 \u0447\u0430\u0441\u0442\u044c\u044e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 K8s. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f, \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0435 \u0432 Kubernetes \u043a\u0430\u043a liveness probes (\u0442.\u0435., \u0434\u043e\u0441\u043b\u043e\u0432\u043d\u043e, [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":29232,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-38965","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432.: \u0412\u0435\u0434\u0443\u0449\u0438\u0439 \u0438\u043d\u0436\u0435\u043d\u0435\u0440 \u0438\u0437 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Zalando \u2014 Henning Jacobs \u2014 \u043d\u0435 \u0440\u0430\u0437 \u0437\u0430\u043c\u0435\u0447\u0430\u043b \u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 Kubernetes \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0432 \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0438 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f liveness (\u0438 readiness) probes \u0438 \u0438\u0445 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/liveness-probes-v-kubernetes-mogut-byt-opasny\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"fr_FR\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Liveness probes \u0432 Kubernetes \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043e\u043f\u0430\u0441\u043d\u044b | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432.: \u0412\u0435\u0434\u0443\u0449\u0438\u0439 \u0438\u043d\u0436\u0435\u043d\u0435\u0440 \u0438\u0437 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Zalando \u2014 Henning Jacobs \u2014 \u043d\u0435 \u0440\u0430\u0437 \u0437\u0430\u043c\u0435\u0447\u0430\u043b \u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 Kubernetes \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0432 \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0438 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f liveness (\u0438 readiness) probes \u0438 \u0438\u0445 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/liveness-probes-v-kubernetes-mogut-byt-opasny\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:27:03+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:27:03+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Les liveness probes dans Kubernetes peuvent \u00eatre dangereuses | ProHoster","description":"Remarque : L'ing\u00e9nieur principal de la soci\u00e9t\u00e9 Zalando, Henning Jacobs, a souvent constat\u00e9 chez les utilisateurs de Kubernetes des probl\u00e8mes de compr\u00e9hension concernant l'objectif des liveness (et readiness) probes et leur utilisation appropri\u00e9e.","canonical_url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/liveness-probes-v-kubernetes-mogut-byt-opasny","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"fr_FR","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Liveness probes \u0432 Kubernetes \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043e\u043f\u0430\u0441\u043d\u044b | ProHoster","og:description":"\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432.: \u0412\u0435\u0434\u0443\u0449\u0438\u0439 \u0438\u043d\u0436\u0435\u043d\u0435\u0440 \u0438\u0437 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Zalando \u2014 Henning Jacobs \u2014 \u043d\u0435 \u0440\u0430\u0437 \u0437\u0430\u043c\u0435\u0447\u0430\u043b \u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 Kubernetes \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0432 \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0438 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f liveness (\u0438 readiness) probes \u0438 \u0438\u0445 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f.","og:url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/liveness-probes-v-kubernetes-mogut-byt-opasny","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:27:03+00:00","article:modified_time":"2019-10-31T19:27:03+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"38965","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-24 00:10:22","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 00:59:27","updated":"2026-01-24 00:10:22","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/38965","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/comments?post=38965"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/38965\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media\/29232"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media?parent=38965"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/categories?post=38965"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/tags?post=38965"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}