{"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\/ro\/blog\/administrirovanie\/liveness-probes-v-kubernetes-mogut-byt-opasny","title":{"rendered":"Probe de liveness \u00een Kubernetes pot fi periculoase","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i><b>Nota traduc\u0103torului.<\/b>: Liderul inginer din compania Zalando \u2014 Henning Jacobs \u2014 a observat de nenum\u0103rate ori c\u0103 utilizatorii Kubernetes au probleme \u00een a \u00een\u021belege scopul probes-urilor liveness (\u0219i readiness) \u0219i aplicarea corect\u0103 a acestora. Prin urmare, el \u0219i-a adunat g\u00e2ndurile \u00een aceast\u0103 not\u0103 concis\u0103, care \u00een timp va deveni parte a documenta\u021biei K8s.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Probe de liveness \u00een Kubernetes pot fi periculoase\" src=\"\/wp-content\/uploads\/2019\/10\/b246e18dadd582889382f306508135a8.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nProbe-urile de stare, cunoscute \u00een Kubernetes ca <i>liveness probes<\/i> <i>(adic\u0103, literal, \u201eteste de viabilitate\u201d \u2014 nt. trad.)<\/i>, pot fi destul de periculoase. Recomand s\u0103 le evita\u021bi pe c\u00e2t posibil: excep\u021biile sunt doar cazurile \u00een care acestea sunt cu adev\u0103rat necesare \u0219i sunte\u021bi pe deplin con\u0219tien\u021bi de specificul \u0219i consecin\u021bele utiliz\u0103rii lor. \u00cen aceast\u0103 publica\u021bie vom discuta despre probes-urile liveness \u0219i readiness, precum \u0219i despre c\u00e2nd <i>merit\u0103<\/i> sau nu merit\u0103 s\u0103 fie aplicate.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Colegul meu Sandor a \u00eemp\u0103rt\u0103\u0219it recent pe Twitter cele mai frecvente gre\u0219eli pe care le \u00eent\u00e2lne\u0219te, inclusiv cele legate de utilizarea readiness\/liveness probes:<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/sszuecs\/status\/1175377157343907840\"><img decoding=\"async\" alt=\"Probe de liveness \u00een Kubernetes pot fi periculoase\" src=\"\/wp-content\/uploads\/2019\/10\/8bc2e834e77e2b51baf06d2465a97b4f.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>O probe de liveness configurat\u0103 incorect <code>livenessProbe<\/code> poate agrava situa\u021biile cu sarcin\u0103 mare (deconectare \u00een aval + repornire poten\u021bial \u00eendelungat\u0103 a containerului\/aplica\u021biei) \u0219i poate duce la alte consecin\u021be negative precum c\u0103deri de dependen\u021be <i>(vezi \u0219i <noindex><a rel=\"nofollow\" href=\"https:\/\/srcco.de\/posts\/k3s-outage-traefik-acme-lets-encrypt-local-path.html\">articolul meu recent<\/a><\/noindex> despre limitarea num\u0103rului de solicit\u0103ri \u00een combina\u021bie K3s+ACME)<\/i>. \u0218i mai r\u0103u, c\u00e2nd liveness probe este combinat cu un health check, care este realizat de o baz\u0103 de date extern\u0103: <b>o singur\u0103 defec\u021biune a BAZEI DE DATI va reporni toate containerele dvs.<\/b>!<\/p>\n<p>Mesajul general <i>\u201eNu folosi\u021bi liveness probes\u201d<\/i> \u00een acest caz ajut\u0103 pu\u021bin, a\u0219a c\u0103 s\u0103 vedem pentru ce sunt menite probe-urile readiness \u0219i liveness. <\/p>\n<p><i>Not\u0103: cea mai mare parte a testului de mai jos a fost inclus\u0103 ini\u021bial \u00een documenta\u021bia intern\u0103 pentru dezvoltatorii Zalando.<\/i><\/p>\n<h2>Probe-urile Readiness \u0219i Liveness<\/h2>\n<p>\nKubernetes ofer\u0103 dou\u0103 mecanisme importante, numite <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/tasks\/configure-pod-container\/configure-liveness-readiness-probes\/\">liveness probes \u0219i readiness probes<\/a><\/noindex>. Acestea efectueaz\u0103 periodic o anumit\u0103 ac\u021biune \u2014 de exemplu, trimit un request HTTP, deschid o conexiune TCP sau execut\u0103 o comand\u0103 \u00een container \u2014 pentru a confirma c\u0103 aplica\u021bia func\u021bioneaz\u0103 corect.<\/p>\n<p>Kubernetes utilizeaz\u0103 <b>readiness probes<\/b>, pentru a \u00een\u021belege c\u00e2nd containerul este preg\u0103tit s\u0103 primeasc\u0103 trafic. Un pod este considerat preg\u0103tit pentru lucru dac\u0103 toate containerele sale sunt gata. Una dintre aplica\u021biile acestui mecanism este de a controla care pod-uri sunt folosite ca backend-uri pentru serviciile Kubernetes (\u0219i \u00een special pentru Ingress).<\/p>\n<p><b>Probe de liveness<\/b> ajut\u0103 Kubernetes s\u0103 \u00een\u021beleag\u0103 c\u00e2nd este momentul s\u0103 reporneasc\u0103 un container. De exemplu, o astfel de verificare permite interceptarea deadlock-ului, atunci c\u00e2nd aplica\u021bia \u201ese blocheaz\u0103\u201d \u00eentr-un loc. Repornirea containerului \u00eentr-o astfel de stare ajut\u0103 la deblocarea aplica\u021biei, \u00een ciuda erorilor, \u00eens\u0103 poate duce \u0219i la e\u0219ecuri \u00een cascad\u0103 (vezi mai jos).<\/p>\n<p>Dac\u0103 \u00eencerca\u021bi s\u0103 desf\u0103\u0219ura\u021bi o actualizare a aplica\u021biei care e\u0219ueaz\u0103 verific\u0103rile de liveness\/readiness, desf\u0103\u0219urarea va fi oprit\u0103, deoarece Kubernetes va a\u0219tepta statutul <code>Gata<\/code> dintre toate pod-urile.<\/p>\n<h2>Exemplu<\/h2>\n<p>\nIat\u0103 un exemplu de readiness probe, care verific\u0103 calea <code>\/health<\/code> prin HTTP cu set\u0103rile implicit (<i>interval<\/i>: 10 secunde, <i>timeout<\/i>: 1 secund\u0103, <i>threshold de succes<\/i>: 1, <i>threshold de e\u0219ec<\/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>Recomand\u0103ri<\/h2>\n<p><\/p>\n<ol>\n<li> Pentru microservicii cu endpoint-uri HTTP (REST etc.) <b>defini\u021bi \u00eentotdeauna readiness probe<\/b>, care verific\u0103 dac\u0103 aplica\u021bia (pod) este gata s\u0103 primeasc\u0103 trafic.<\/li>\n<li> Asigura\u021bi-v\u0103 c\u0103 readiness probe <b>acoper\u0103 preg\u0103tirea portului efectiv al serverului web<\/b>:\n<ul>\n<li> utiliz\u00e2nd porturi pentru nevoi administrative, denumite \u201eadmin\u201d sau \u201emanagement\u201d (de exemplu, 9090), pentru <code>readinessProbe<\/code>, asigura\u021bi-v\u0103 c\u0103 endpoint-ul returneaz\u0103 OK doar dac\u0103 portul HTTP principal (de exemplu, 8080) este gata s\u0103 primeasc\u0103 trafic*;\n<p><i>* \u0218tiu de cel pu\u021bin un caz din Zalando, c\u00e2nd acest lucru nu s-a \u00eent\u00e2mplat, adic\u0103 <code>readinessProbe<\/code> a verificat portul \u201emanagement\u201d, dar serverul nu a \u00eenceput s\u0103 func\u021bioneze din cauza problemelor cu \u00eenc\u0103rcarea cache-ului.<\/i><\/li>\n<li> ata\u0219area readiness probe la un port separat poate duce la faptul c\u0103 supra\u00eenc\u0103rcarea pe portul principal nu se va reflecta \u00een health check (adic\u0103, pool-ul de thread-uri de pe server este plin, totu\u0219i health check-ul arat\u0103 c\u0103 totul este OK).<\/li>\n<\/ul>\n<\/li>\n<li> Asigura\u021bi-v\u0103 c\u0103 <b>readiness probe include ini\u021bializarea\/migrarea bazei de date<\/b>;\n<ul>\n<li> cel mai simplu mod de a realiza acest lucru este s\u0103 apela\u021bi la serverul HTTP doar dup\u0103 finalizarea ini\u021bializ\u0103rii (de exemplu, migrarea DB cu <noindex><a rel=\"nofollow\" href=\"https:\/\/flywaydb.org\/\">Flyway<\/a><\/noindex> etc.); adic\u0103, \u00een loc s\u0103 schimbe statutul health check-ului, pur \u0219i simplu nu porni\u021bi serverul web p\u00e2n\u0103 c\u00e2nd migrarea Bazei de Date nu este finalizat\u0103*.\n<p><i>* De asemenea, pot fi efectuate migrarea Bazei de Date din init-containere din afara pod-ului. R\u0103m\u00e2n un fan al aplica\u021biilor autocon\u021binute, adic\u0103 acelea \u00een care containerul aplica\u021biei \u0219tie f\u0103r\u0103 coordonare extern\u0103 cum s\u0103 aduc\u0103 Baza de Date \u00een starea dorit\u0103.<\/i><\/li>\n<\/ul>\n<\/li>\n<li> Windows VPS pentru lucru la distan\u021b\u0103 <code>httpGet<\/code> pentru verific\u0103rile readiness prin tipicele endpoint-uri de health check (de exemplu, <code>\/health<\/code>).<\/li>\n<li> <b>\u00cen\u021belege\u021bi parametrii de verificare seta\u021bi implicit<\/b> (<code>interval: 10s<\/code>, <code>timeout: 1s<\/code>, <code>successThreshold: 1<\/code>, <code>failureThreshold: 3<\/code>):\n<ul>\n<li> parametrii implica\u021bi \u00een mod implicit \u00eenseamn\u0103 c\u0103 pod-ul va deveni <i>not-ready<\/i> \u00een aproximativ 30 de secunde (3 verific\u0103ri e\u0219uate ale st\u0103rii de func\u021bionare).<\/li>\n<\/ul>\n<\/li>\n<li> Utiliza\u021bi un port separat pentru \u00abadmin\u00bb sau \u00abmanagement\u00bb, dac\u0103 tehnologia stack-ului (de exemplu, Java\/Spring) permite acest lucru, pentru a separa gestionarea \u00abs\u0103n\u0103t\u0103\u021bii\u00bb \u0219i metricilor de traficul obi\u0219nuit:\n<ul>\n<li> dar nu uita\u021bi de punctul 2.<\/li>\n<\/ul>\n<\/li>\n<li> Dac\u0103 este necesar, readiness probe poate fi folosit pentru a \u00eenc\u0103lzi\/\u00eenc\u0103rca cache-ul \u0219i returna codul de stare 503, p\u00e2n\u0103 c\u00e2nd containerul nu se \u00ab\u00eenc\u0103lze\u0219te\u00bb:\n<ul>\n<li> de asemenea, recomand s\u0103 v\u0103 familiariza\u021bi cu noua verificare <code>startupProbe<\/code>, <noindex><a rel=\"nofollow\" href=\"https:\/\/sysdig.com\/blog\/whats-new-kubernetes-1-16\/\">ap\u0103rut\u0103 \u00een versiunea 1.16<\/a><\/noindex> <i>(am scris despre ea \u00een rom\u00e2n\u0103 <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/467477\/\">aici<\/a><\/noindex> \u2014 nota trad.)<\/i>.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p><\/p>\n<h2>Aten\u021bion\u0103ri<\/h2>\n<p><\/p>\n<ol>\n<li> <b>Nu v\u0103 baza\u021bi pe dependen\u021be externe<\/b> (cum ar fi stoc\u0103rile de date) \u00een timpul testelor de readiness\/liveness \u2014 acest lucru poate duce la e\u0219ecuri \u00een cascad\u0103:\n<ul>\n<li> ca exemplu, s\u0103 lu\u0103m un serviciu stateful REST cu 10 pod-uri, dependente de o singur\u0103 baz\u0103 de date Postgres: c\u00e2nd verificarea depinde de o conexiune activ\u0103 la Baza de Date, toate cele 10 pod-uri pot c\u0103dea dac\u0103 apare o \u00eent\u00e2rziere \u00een re\u021bea\/sau pe partea Bazei de Date \u2014 de obicei, toate acestea se termin\u0103 mai r\u0103u dec\u00e2t ar putea;<\/li>\n<li> re\u021bine\u021bi c\u0103 Spring Data verific\u0103 de obicei conexiunea cu baza de date*;\n<p><i>* Acesta este comportamentul implicit al Spring Data Redis (cel pu\u021bin a fost a\u0219a c\u00e2nd am verificat ultima dat\u0103), ceea ce a dus la o \u201ec\u0103dere catastrofal\u0103\u201d: c\u00e2nd Redis a devenit temporar inaccesibil, toate pod-urile au \u201ec\u0103zut\u201d.<\/i><\/li>\n<li> \u201eextern\u201d \u00een acest sens poate \u00eensemna de asemenea alte pod-uri ale acelea\u0219i aplica\u021bii, adic\u0103, ideal, verificarea nu ar trebui s\u0103 depind\u0103 de starea altor pod-uri din acela\u0219i cluster pentru a preveni c\u0103derile \u00een cascad\u0103:\n<ul>\n<li> rezultatele pot varia pentru aplica\u021biile cu stare distribuit\u0103 (de exemplu, caching in-memory \u00een pod-uri).<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li> <b>Nu utiliza\u021bi liveness probe<\/b> pentru poduri (excep\u021biile sunt cazurile \u00een care sunt cu adev\u0103rat necesare \u0219i sunte\u021bi pe deplin con\u0219tient de specificul \u0219i consecin\u021bele utiliz\u0103rii lor):\n<ul>\n<li> proba de liveness poate ajuta la recuperarea containerelor \u201eblocate\u201d, dar, deoarece ave\u021bi control deplin asupra aplica\u021biei dvs., lucruri precum procesele \u201eblocate\u201d \u0219i deadlock-urile, \u00een ideal, nu ar trebui s\u0103 se \u00eent\u00e2mple: cea mai bun\u0103 alternativ\u0103 este pr\u0103bu\u0219irea inten\u021bionat\u0103 a aplica\u021biei \u0219i returnarea acesteia la o stare stabil\u0103 anterioar\u0103;<\/li>\n<li> Un e\u0219ec al probei de liveness va duce la repornirea containerului, ceea ce ar putea agrava consecin\u021bele erorilor legate de \u00eenc\u0103rcare: repornirea containerului va provoca un timp de nefunc\u021bionare (cel pu\u021bin, timp de pornire a aplica\u021biei, s\u0103 spunem, peste 30 de secunde), provoc\u00e2nd noi erori, cresc\u00e2nd sarcina asupra altor containere \u0219i sporind probabilitatea ca acestea s\u0103 e\u0219ueze, etc.;<\/li>\n<li> Probe-urile de liveness combinate cu o dependen\u021b\u0103 extern\u0103 reprezint\u0103 cea mai proast\u0103 combina\u021bie posibil\u0103, risc\u00e2nd e\u0219ecuri \u00een cascad\u0103: o \u00eent\u00e2rziere minor\u0103 pe partea bazei de date va duce la repornirea tuturor containerelor dvs.!<\/li>\n<\/ul>\n<\/li>\n<li> Parametrii probelor de liveness \u0219i readiness <b>trebuie s\u0103 fie diferi\u021bi<\/b>:\n<ul>\n<li> poate fi utilizat\u0103 proba de liveness cu aceea\u0219i verificare de s\u0103n\u0103tate, dar cu un prag de declan\u0219are mai mare (<code>failureThreshold<\/code>), de exemplu, atribuirea unui status <i>not-ready<\/i> dup\u0103 3 \u00eencerc\u0103ri \u0219i considerarea c\u0103 proba de liveness a e\u0219uat dup\u0103 10 \u00eencerc\u0103ri;<\/li>\n<\/ul>\n<\/li>\n<li> <b>Nu utiliza\u021bi verific\u0103ri exec<\/b>, deoarece acestea sunt legate de probleme cunoscute care duc la apari\u021bia proceselor zombie:\n<ul>\n<li> detalii: vezi <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=QKI-JRs2RIE\">prezentarea speciali\u0219tilor de la Datadog<\/a><\/noindex>.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p><\/p>\n<h2>Rezumat<\/h2>\n<p><\/p>\n<ul>\n<li> Utiliza\u021bi probele de readiness pentru a determina c\u00e2nd un pod este preg\u0103tit s\u0103 primeasc\u0103 trafic.<\/li>\n<li> Utiliza\u021bi probele de liveness doar atunci c\u00e2nd sunt cu adev\u0103rat necesare.<\/li>\n<li> Utilizarea incorect\u0103 a probelor de readiness\/liveness poate duce la o disponibilitate sc\u0103zut\u0103 \u0219i la e\u0219ecuri \u00een cascada.<\/li>\n<\/ul>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/sszuecs\/status\/1175655221382529025\"><img decoding=\"async\" alt=\"Probe de liveness \u00een Kubernetes pot fi periculoase\" src=\"\/wp-content\/uploads\/2019\/10\/8c212c41d6e69cd515a85d2b6100aaed.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<h2>Materiale suplimentare pe tema<\/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\/\">Documentele Kubernetes: Configure Liveness and Readiness Probes<\/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\/\">Probe-urile de Liveness \u0219i Readiness Kubernetes Revisited: Cum s\u0103 evi\u021bi s\u0103 te \u00eempu\u0219ti \u00een piciorul cel\u0103lalt<\/a><\/noindex>;<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/keepingitclassless.net\/2018\/12\/december-4-nre-labs-outage-post-mortem\/\">Raport Post-Mortem NRE Labs<\/a><\/noindex> (vorbe\u0219te \u0219i despre livenessProbe).<\/li>\n<\/ul>\n<p><\/p>\n<h2>Actualizare Nr. 1 din 2019-09-29<\/h2>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/BarrWill1\/status\/1178144162526453760\">Despre init-containere pentru migrarea bazelor de date<\/a><\/noindex>: a fost ad\u0103ugat\u0103 o not\u0103 de subsol.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/ejc3\/status\/1178077779293683713\">EJ mi-a amintit<\/a><\/noindex> despre PDB: una dintre problemele probelor de liveness este lipsa de coordonare \u00eentre poduri. \u00cen Kubernetes exist\u0103 <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/tasks\/run-application\/configure-pdb\/\">Pod Disruption Budgets (PDB)<\/a><\/noindex> pentru a limita num\u0103rul de e\u0219ecuri paralele pe care aplica\u021bia le poate experimenta, dar verific\u0103rile nu iau \u00een considerare PDB. \u00cen ideal, putem ordona K8s: \u00abReporneste un pod, dac\u0103 verificarea sa e\u0219ueaz\u0103, dar nu le reporni pe toate, pentru a nu agrava situa\u021bia\u00bb.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/bboreham\/status\/1178083887991398400\">Bryan a formulat excelent<\/a><\/noindex>: \u201eFolos\u021bi\u021bi sondarea de liveness atunci c\u00e2nd \u0219ti\u021bi exact c\u0103 <b>cel mai bine ar fi s\u0103 \u201eomor\u00e2\u021bi\u201d aplica\u021bia<\/b>\u201e(de asemenea, nu v\u0103 l\u0103sa\u021bi dus de val).<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/bboreham\/status\/1178207929540972544\"><img decoding=\"async\" alt=\"Probe de liveness \u00een Kubernetes pot fi periculoase\" src=\"\/wp-content\/uploads\/2019\/10\/524122a63bd4acd950bf9fc8aeeb45be.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<h2>Actualizare nr. 2 din 2019-09-29<\/h2>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/Guillaume_Swiss\/status\/1178258781152563200\">\u00cen leg\u0103tur\u0103 cu citirea documenta\u021biei \u00eenainte de utilizare<\/a><\/noindex>: am creat o solicitare corespunz\u0103toare (<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes\/website\/issues\/16607\">cererea de caracteristici<\/a><\/noindex>) pentru a completa documenta\u021bia despre sond\u0103rile de liveness.<\/p>\n<h2>P.S. de la traduc\u0103tor<\/h2>\n<p>\nCiti\u021bi \u0219i \u00een blogul nostru:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/415393\/\">Kubernetes: via\u021ba unui pod<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/425085\/\">7 cele mai bune practici pentru exploatarea containerelor conform Google<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/353272\/\">7 principii de proiectare a aplica\u021biilor bazate pe containere<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>Sursa: <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\/ro\/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=\"ro_RO\" \/>\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\/ro\/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\udd47Sond\u0103rile de liveness \u00een Kubernetes pot fi periculoase | ProHoster","description":"Not\u0103 traduc\u0103tor: Principalul inginer de la Zalando - Henning Jacobs - a observat de mai multe ori c\u0103 utilizatorii Kubernetes au probleme \u00een \u00een\u021belegerea scopului sond\u0103rilor de liveness (\u0219i readiness) \u0219i aplicarea corect\u0103 a acestora.","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/liveness-probes-v-kubernetes-mogut-byt-opasny","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"ro_RO","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\/ro\/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\/ro\/wp-json\/wp\/v2\/posts\/38965","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=38965"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/38965\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media\/29232"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=38965"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=38965"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=38965"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}