{"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\/hu\/blog\/administrirovanie\/liveness-probes-v-kubernetes-mogut-byt-opasny","title":{"rendered":"A Kubernetes live probe-ok vesz\u00e9lyesek lehetnek","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i><b>Megjegyz\u00e9s ford\u00edt\u00e1s.<\/b>: A vezet\u0151 m\u00e9rn\u00f6k a Zalando c\u00e9gt\u0151l, Henning Jacobs, t\u00f6bbsz\u00f6r is \u00e9szlelte, hogy a Kubernetes felhaszn\u00e1l\u00f3i nehezen \u00e9rtik a liveness (\u00e9s readiness) probe-ok c\u00e9lj\u00e1t \u00e9s helyes alkalmaz\u00e1s\u00e1t. Ez\u00e9rt \u00f6sszegy\u0171jt\u00f6tte gondolatait ebben az \u00f6sszefoglal\u00f3 jegyzetben, amely id\u0151vel a K8s dokument\u00e1ci\u00f3 r\u00e9sz\u00e9v\u00e9 v\u00e1lik.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"A Kubernetes live probe-ok vesz\u00e9lyesek lehetnek\" src=\"\/wp-content\/uploads\/2019\/10\/b246e18dadd582889382f306508135a8.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAz \u00e1llapotellen\u0151rz\u00e9sek, amelyeket a Kubernetesben <i>liveness probes<\/i> <i>k\u00e9nt ismernek (azaz, sz\u00f3 szerint ,,\u00e9letk\u00e9pess\u00e9gi tesztek\u201d \u2013 ford. megj.),<\/i>meglehet\u0151sen vesz\u00e9lyesek lehetnek. Javaslom, hogy ha lehets\u00e9ges, ker\u00fclje el \u0151ket: kiv\u00e9telt k\u00e9peznek azok az esetek, amikor val\u00f3ban sz\u00fcks\u00e9g van r\u00e1juk, \u00e9s teljesen tiszt\u00e1ban van a haszn\u00e1latukkal j\u00e1r\u00f3 specifikumokkal \u00e9s k\u00f6vetkezm\u00e9nyekkel. Ebben a publik\u00e1ci\u00f3ban a liveness \u00e9s readiness ellen\u0151rz\u00e9sekr\u0151l lesz sz\u00f3, valamint arr\u00f3l, hogy mikor <i>\u00e9rdemes<\/i> \u00e9s mikor nem \u00e9rdemes \u0151ket alkalmazni.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>A koll\u00e9g\u00e1m, Sandor, nemr\u00e9g osztotta meg a Twitteren a leggyakoribb hib\u00e1kat, amelyekkel tal\u00e1lkozik, bele\u00e9rtve a readiness\/liveness probe-ok haszn\u00e1lat\u00e1val kapcsolatosakat is:<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/sszuecs\/status\/1175377157343907840\"><img decoding=\"async\" alt=\"A Kubernetes live probe-ok vesz\u00e9lyesek lehetnek\" src=\"\/wp-content\/uploads\/2019\/10\/8bc2e834e77e2b51baf06d2465a97b4f.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>A helytelen\u00fcl be\u00e1ll\u00edtott <code>livenessProbe<\/code> s\u00falyosb\u00edthatja a nagy terhel\u00e9ses helyzeteket (lavina-szer\u0171 le\u00e1ll\u00e1s + potenci\u00e1lisan hossz\u00fa ind\u00edt\u00e1s a kont\u00e9nerb\u0151l\/javaslatb\u00f3l), \u00e9s m\u00e1s negat\u00edv k\u00f6vetkezm\u00e9nyekhez vezethet, mint p\u00e9ld\u00e1ul a f\u00fcgg\u0151s\u00e9gek \u00f6sszeoml\u00e1sa. <i>(l\u00e1sd m\u00e9g <noindex><a rel=\"nofollow\" href=\"https:\/\/srcco.de\/posts\/k3s-outage-traefik-acme-lets-encrypt-local-path.html\">a k\u00f6zelm\u00faltban \u00edrt cikkemet<\/a><\/noindex> az K3s+ACME \u00f6sszekapcsol\u00e1s\u00e1ban a k\u00e9r\u00e9sek sz\u00e1m\u00e1nak korl\u00e1toz\u00e1sa \u00e9rdek\u00e9ben)<\/i>. M\u00e9g rosszabb, ha a liveness probe-t \u00f6tv\u00f6zik a f\u00fcgg\u0151s\u00e9g eg\u00e9szs\u00e9g\u00fcgyi ellen\u0151rz\u00e9s\u00e9vel (health check), amelyet egy k\u00fcls\u0151 adatb\u00e1zis k\u00e9pvisel: <b>egyetlen adatb\u00e1zis hiba \u00fajraind\u00edtja az \u00f6sszes kont\u00e9nert.<\/b>!<\/p>\n<p>Az \u00e1ltal\u00e1nos \u00fczenet <i>0, hogy ,,ne haszn\u00e1lj liveness probe-okat,\u201d,<\/i> ebben az esetben nem sokat seg\u00edt, ez\u00e9rt n\u00e9zz\u00fck meg, mi\u00e9rt is sz\u00fcks\u00e9gesek a readiness \u00e9s liveness ellen\u0151rz\u00e9sek. <\/p>\n<p><i>Megjegyz\u00e9s: Az al\u00e1bb bemutatott teszt nagy r\u00e9sze eredetileg a Zalando fejleszt\u0151i bels\u0151 dokument\u00e1ci\u00f3j\u00e1ban szerepelt.<\/i><\/p>\n<h2>Readiness \u00e9s Liveness Ellen\u0151rz\u00e9sek<\/h2>\n<p>\nA Kubernetes k\u00e9t fontos mechanizmust biztos\u00edt, amelyeket <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/tasks\/configure-pod-container\/configure-liveness-readiness-probes\/\">liveness probes \u00e9s readiness probes<\/a><\/noindex>-nak h\u00edvnak. Ezek id\u0151szakosan v\u00e9grehajtanak bizonyos m\u0171veleteket \u2013 p\u00e9ld\u00e1ul HTTP k\u00e9rd\u00e9st k\u00fcldenek, TCP kapcsolatot nyitnak, vagy parancsot futtatnak a kont\u00e9nerben \u2013, hogy meger\u0151s\u00edts\u00e9k, hogy az alkalmaz\u00e1s megfelel\u0151en m\u0171k\u00f6dik.<\/p>\n<p>A Kubernetes a <b>readiness probes-t haszn\u00e1lja.<\/b>, hogy meg\u00e9rts\u00fck, mikor k\u00e9sz a kont\u00e9ner a forgalom fogad\u00e1s\u00e1ra. A pod akkor tekinthet\u0151 \u00fczemk\u00e9pesnek, ha minden kont\u00e9nerje k\u00e9szen \u00e1ll. Ennek a mechanizmusnak az egyik alkalmaz\u00e1sa, hogy ellen\u0151rizz\u00fck, mely pod-ok szolg\u00e1lnak h\u00e1tt\u00e9rk\u00e9nt a Kubernetes szolg\u00e1ltat\u00e1sok (\u00e9s k\u00fcl\u00f6n\u00f6sen az Ingress) sz\u00e1m\u00e1ra.<\/p>\n<p><b>\u00c9l\u0151hely-ellen\u0151rz\u00e9sek<\/b> seg\u00edtenek a Kubernetesnek meg\u00e9rteni, mikor van itt az ideje a kont\u00e9ner \u00fajraind\u00edt\u00e1s\u00e1nak. P\u00e9ld\u00e1ul egy ilyen ellen\u0151rz\u00e9s lehet\u0151v\u00e9 teszi a holtpontok megakad\u00e1lyoz\u00e1s\u00e1t, amikor az alkalmaz\u00e1s \u201emegakadt\u201d egy helyen. A kont\u00e9ner \u00fajraind\u00edt\u00e1sa ilyen \u00e1llapotban seg\u00edt az alkalmaz\u00e1st elmozd\u00edtani a holtpontb\u00f3l, a hib\u00e1k ellen\u00e9re, azonban kaszk\u00e1d hib\u00e1khoz is vezethet (l\u00e1sd al\u00e1bb).<\/p>\n<p>Ha megpr\u00f3b\u00e1lja telep\u00edteni az alkalmaz\u00e1s friss\u00edt\u00e9s\u00e9t, amely nem teljes\u00edti az \u00e9l\u0151hely\/\u00e1tt\u00e9r\u00e9si ellen\u0151rz\u00e9st, a telep\u00edt\u00e9se megakad. <code>K\u00e9sz<\/code> mind a pod-ok.<\/p>\n<h2>t\u00e1mad\u00e1sra<\/h2>\n<p>\nminden pod-t\u00f3l. <code>\/health<\/code> Itt van egy p\u00e9lda egy \u00e1tt\u00e9r\u00e9si ellen\u0151rz\u00e9sre, amely HTTP-n kereszt\u00fcl ellen\u0151rzi az \u00fatvonalat<i>intervallum<\/i>: 10 m\u00e1sodperc, <i>id\u0151korl\u00e1t<\/i>: 1 m\u00e1sodperc, <i>sikerk\u00fcsz\u00f6b<\/i>: 1, <i>hiba k\u00fcsz\u00f6b<\/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>Aj\u00e1nl\u00e1sok<\/h2>\n<p><\/p>\n<ol>\n<li> HTTP v\u00e9gponttal rendelkez\u0151 mikroszolg\u00e1ltat\u00e1sok eset\u00e9ben (REST stb.) <b>mindig hat\u00e1rozza meg az \u00e1tt\u00e9r\u00e9si ellen\u0151rz\u00e9st<\/b>, amely ellen\u0151rzi, hogy az alkalmaz\u00e1s (pod) k\u00e9szen \u00e1ll-e a forgalom fogad\u00e1s\u00e1ra.<\/li>\n<li> Bizonyosodjon meg arr\u00f3l, hogy az \u00e1tt\u00e9r\u00e9si ellen\u0151rz\u00e9s <b>kiterjed a t\u00e9nyleges webszerver portj\u00e1nak k\u00e9szenl\u00e9t\u00e9re<\/b>:\n<ul>\n<li> adminisztrat\u00edv sz\u00fcks\u00e9gletekhez haszn\u00e1lt portokat, amelyeket \u00abadmin\u00bb vagy \u00abmanagement\u00bb n\u00e9ven h\u00edvnak (p\u00e9ld\u00e1ul 9090), a <code>\u00e1tterjed\u00e9si ellen\u0151rz\u00e9shez<\/code>, gy\u0151z\u0151dj\u00f6n meg r\u00f3la, hogy a v\u00e9gpont csak akkor ad vissza OK-t, ha a f\u0151 HTTP-port (mint p\u00e9ld\u00e1ul 8080) k\u00e9sz a forgalom fogad\u00e1s\u00e1ra*;\n<p><i>* Tudok legal\u00e1bb egy esetet a Zalando-n\u00e1l, amikor ez nem t\u00f6rt\u00e9nt meg, azaz <code>\u00e1tterjed\u00e9si ellen\u0151rz\u00e9shez<\/code> ellen\u0151rizte a \u00abmanagement\u00bb portot, de maga a szerver nem indult el a cache bet\u00f6lt\u00e9se sor\u00e1n fell\u00e9p\u0151 probl\u00e9m\u00e1k miatt.<\/i><\/li>\n<li> a readiness probe k\u00fcl\u00f6n portj\u00e1ra val\u00f3 telep\u00edt\u00e9se azt eredm\u00e9nyezheti, hogy a f\u0151 port terhel\u00e9se nem jelenik meg az eg\u00e9szs\u00e9g\u00fcgyi ellen\u0151rz\u00e9sben (azaz a szerver sz\u00e1lpoolsza tele van, de az eg\u00e9szs\u00e9g\u00fcgyi ellen\u0151rz\u00e9s tov\u00e1bbra is azt mutatja, hogy minden rendben van).<\/li>\n<\/ul>\n<\/li>\n<li> Bizonyosodjon meg arr\u00f3l, hogy <b>az \u00e1tt\u00e9r\u00e9si ellen\u0151rz\u00e9s tartalmazza az adatb\u00e1zis inicializ\u00e1l\u00e1s\u00e1t\/migr\u00e1l\u00e1s\u00e1t.<\/b>;\n<ul>\n<li> A legegyszer\u0171bb m\u00f3dja ennek el\u00e9r\u00e9s\u00e9re, ha az HTTP-szerverhez csak az inicializ\u00e1l\u00e1s befejez\u00e9se ut\u00e1n fordulunk (p\u00e9ld\u00e1ul az adatb\u00e1zis migr\u00e1ci\u00f3j\u00e1t a <noindex><a rel=\"nofollow\" href=\"https:\/\/flywaydb.org\/\">Flyway<\/a><\/noindex> stb.); azaz ahelyett, hogy megv\u00e1ltoztatn\u00e1nk az eg\u00e9szs\u00e9g\u00fcgyi ellen\u0151rz\u00e9s st\u00e1tusz\u00e1t, egyszer\u0171en ne ind\u00edtsuk el a webszervert a DB-migr\u00e1ci\u00f3 befejez\u00e9s\u00e9ig*.\n<p><i>* Az adatb\u00e1zis migr\u00e1ci\u00f3k ind\u00edt\u00e1sa init-kont\u00e9nerekb\u0151l is lehets\u00e9ges a pod-on k\u00edv\u00fcl. Tov\u00e1bbra is a self-contained alkalmaz\u00e1sok h\u00edve vagyok, amelyeket az jellemez, hogy az alkalmaz\u00e1s kont\u00e9nere k\u00fcls\u0151 koordin\u00e1ci\u00f3 n\u00e9lk\u00fcl tudja, hogyan hozza az adatb\u00e1zist a megfelel\u0151 \u00e1llapotba.<\/i><\/li>\n<\/ul>\n<\/li>\n<li> Haszn\u00e1lja <code>httpGet<\/code> a t\u00edpikus eg\u00e9szs\u00e9g\u00fcgyi ellen\u0151rz\u0151 v\u00e9gpontokon kereszt\u00fcli readiness-ellen\u0151rz\u00e9sekhez (p\u00e9ld\u00e1ul, <code>\/health<\/code>).<\/li>\n<li> <b>J\u00e1rj ut\u00e1na az alap\u00e9rtelmezett ellen\u0151rz\u00e9si param\u00e9tereknek<\/b> (<code>interval: 10s<\/code>, <code>timeout: 1s<\/code>, <code>successThreshold: 1<\/code>, <code>failureThreshold: 3<\/code>):\n<ul>\n<li> az alap\u00e9rtelmezett param\u00e9terek azt jelentik, hogy a pod <i>not-ready<\/i> k\u00f6r\u00fclbel\u00fcl 30 m\u00e1sodperc m\u00falva (3 sikertelen \u00e9lhet\u0151s\u00e9gi ellen\u0151rz\u00e9s ut\u00e1n).<\/li>\n<\/ul>\n<\/li>\n<li> Haszn\u00e1lj k\u00fcl\u00f6n portot az \u201eadmin\u201d vagy \u201emanagement\u201d funkci\u00f3khoz, ha a technol\u00f3giai stack (p\u00e9ld\u00e1ul Java\/Spring) ezt lehet\u0151v\u00e9 teszi, hogy elv\u00e1laszd az \u201eeg\u00e9szs\u00e9g\u201d kezel\u00e9st \u00e9s a metrik\u00e1kat a szok\u00e1sos forgalomt\u00f3l:\n<ul>\n<li> de ne feledd a 2. pontot sem.<\/li>\n<\/ul>\n<\/li>\n<li> Ha sz\u00fcks\u00e9ges, a readiness probe-ot haszn\u00e1lhatod a cache el\u0151meleg\u00edt\u00e9s\u00e9re\/\u00f6lt\u00f6ztet\u00e9s\u00e9re, \u00e9s 503-as \u00e1llapotk\u00f3dot adhatsz vissza, am\u00edg a kont\u00e9ner fel nem melegszik:\n<ul>\n<li> aj\u00e1nlom, hogy ismerkedj meg az \u00faj ellen\u0151rz\u00e9ssel <code>startupProbe<\/code>, <noindex><a rel=\"nofollow\" href=\"https:\/\/sysdig.com\/blog\/whats-new-kubernetes-1-16\/\">amely a 1.16-os verzi\u00f3ban jelent meg<\/a><\/noindex> <i>(err\u0151l \u00edrtunk oroszul <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/467477\/\">itt<\/a><\/noindex> \u2014 a ford\u00edt\u00f3 megjegyz\u00e9se)<\/i>.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p><\/p>\n<h2>Figyelmeztet\u00e9sek<\/h2>\n<p><\/p>\n<ol>\n<li> <b>Ne t\u00e1maszkodj k\u00fcls\u0151 f\u00fcgg\u0151s\u00e9gekre<\/b> (p\u00e9ld\u00e1ul adatt\u00e1rol\u00f3k) readiness\/liveness tesztek v\u00e9grehajt\u00e1sakor - ez l\u00e1ncreakci\u00f3s le\u00e1ll\u00e1sokhoz vezethet:\n<ul>\n<li> p\u00e9ldak\u00e9nt vegy\u00fcnk egy stateful REST szolg\u00e1ltat\u00e1st 10 pod-dal, amelyek egy Postgres adatb\u00e1zist\u00f3l f\u00fcggenek: amikor az ellen\u0151rz\u00e9s a m\u0171k\u00f6d\u0151 DB kapcsolatb\u00f3l f\u00fcgg, az \u00f6sszes 10 pod le\u00e1llhat, ha h\u00e1l\u00f3zati k\u00e9sleked\u00e9s l\u00e9p fel a DB oldal\u00e1n \u2014 \u00e1ltal\u00e1ban mindez rosszabbul v\u00e9gz\u0151dik, mint ahogy lehetne;<\/li>\n<li> figyelmeztess, hogy a Spring Data alap\u00e9rtelmez\u00e9s szerint ellen\u0151rzi az adatb\u00e1zis kapcsol\u00f3d\u00e1st*;\n<p><i>* Ez a behavior a Spring Data Redis alap\u00e9rtelmezett be\u00e1ll\u00edt\u00e1sa (legal\u00e1bbis amikor utolj\u00e1ra ellen\u0151riztem, \u00edgy volt), ami \u201ekatasztrof\u00e1lis\u201d le\u00e1ll\u00e1shoz vezetett: amikor a Redis r\u00f6vid id\u0151re el\u00e9rhetetlenn\u00e9 v\u00e1lt, az \u00f6sszes pod \u201ele\u00e1llt\u201d.<\/i><\/li>\n<li> A \u201ek\u00fcls\u0151\u201d ebben az \u00e9rtelemben m\u00e1s pod-ok is jelenthetik ugyanazon alkalmaz\u00e1s eset\u00e9ben, azaz ide\u00e1lis esetben az ellen\u0151rz\u00e9snek nem szabadna f\u00fcggnie a klaszter m\u00e1s pod-jainak \u00e1llapot\u00e1t\u00f3l a lavinaszer\u0171 le\u00e1ll\u00e1sok megakad\u00e1lyoz\u00e1sa \u00e9rdek\u00e9ben:\n<ul>\n<li> az eredm\u00e9nyek v\u00e1ltozhatnak elosztott \u00e1llapot\u00fa alkalmaz\u00e1sok eset\u00e9n (p\u00e9ld\u00e1ul in-memory caching pod-okban).<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li> <b>Ne haszn\u00e1ld a liveness probe-ot<\/b> a podok sz\u00e1m\u00e1ra (kiv\u00e9ve azokat az eseteket, amikor t\u00e9nyleg sz\u00fcks\u00e9gesek, \u00e9s teljes m\u00e9rt\u00e9kben tiszt\u00e1ban vagy a haszn\u00e1latuk saj\u00e1toss\u00e1gaival \u00e9s k\u00f6vetkezm\u00e9nyeivel):\n<ul>\n<li> a liveness probe seg\u00edthet helyre\u00e1ll\u00edtani a \"megakadt\" kont\u00e9nereket, de mivel teljes m\u00e9rt\u00e9kben kontroll\u00e1lod az alkalmaz\u00e1sodat, ide\u00e1lis esetben nem kellene, hogy ilyen helyzetek, mint a \"megakadt\" folyamatok \u00e9s deadlockok el\u0151forduljanak: a legjobb alternat\u00edva az, hogy az alkalmaz\u00e1st sz\u00e1nd\u00e9kosan le\u00e1ll\u00edtod, majd vissza\u00e1ll\u00edtod egy kor\u00e1bbi stabil \u00e1llapot\u00e1ba;<\/li>\n<li> A failed liveness probe will result in the container being restarted, potentially exacerbating issues related to loading: restarting the container leads to downtime (at least during the application startup, let's say for more than 30 seconds), causing new errors, increasing the load on other containers, and raising the likelihood of their failure, etc.;<\/li>\n<li> Liveness checks combined with external dependencies are the worst possible combination, threatening cascade failures: a minor delay on the DB side will restart all your containers!<\/li>\n<\/ul>\n<\/li>\n<li> Liveness and readiness check parameters <b>must be different<\/b>:\n<ul>\n<li> a liveness probe-ot haszn\u00e1lhatod ugyanazzal a health check-el, de magasabb aktiv\u00e1l\u00e1si k\u00fcsz\u00f6bbel (<code>failureThreshold<\/code>), for example, assign a status <i>not-ready<\/i> after 3 attempts and consider the liveness probe failed after 10 attempts;<\/li>\n<\/ul>\n<\/li>\n<li> <b>Do not use exec checks<\/b>, as they are associated with known issues that can lead to zombie processes:\n<ul>\n<li> for details, see <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=QKI-JRs2RIE\">the presentation by Datadog specialists<\/a><\/noindex>.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p><\/p>\n<h2>\u00d6sszefoglal\u00f3<\/h2>\n<p><\/p>\n<ul>\n<li> Use readiness probes to determine when the pod is ready to accept traffic.<\/li>\n<li> Use liveness probes only when they are truly necessary.<\/li>\n<li> Incorrect use of readiness\/liveness probes can lead to reduced availability and cascade failures.<\/li>\n<\/ul>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/sszuecs\/status\/1175655221382529025\"><img decoding=\"async\" alt=\"A Kubernetes live probe-ok vesz\u00e9lyesek lehetnek\" src=\"\/wp-content\/uploads\/2019\/10\/8c212c41d6e69cd515a85d2b6100aaed.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<h2>Additional materials on the topic<\/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\/\">Kubernetes docs: 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\/\">Kubernetes Liveness and Readiness Probes Revisited: How to Avoid Shooting Yourself in the Other Foot<\/a><\/noindex>;<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/keepingitclassless.net\/2018\/12\/december-4-nre-labs-outage-post-mortem\/\">NRE Labs Outage Post-Mortem<\/a><\/noindex> (also discusses livenessProbe).<\/li>\n<\/ul>\n<p><\/p>\n<h2>Update #1 from 2019-09-29<\/h2>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/BarrWill1\/status\/1178144162526453760\">About init containers for DB migration<\/a><\/noindex>: footnote added.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/ejc3\/status\/1178077779293683713\">EJ reminded me<\/a><\/noindex> a PDB-r\u0151l: a liveness ellen\u0151rz\u00e9sek egyik h\u00e1tr\u00e1nya a podok k\u00f6z\u00f6tti koordin\u00e1ci\u00f3 hi\u00e1nya. A Kubernetes-ben van <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/tasks\/run-application\/configure-pdb\/\">Pod Disruption Budgets (PDB)<\/a><\/noindex> to limit the number of concurrent failures an application can experience, however, checks do not take PDB into account. Ideally, we could instruct K8s: \"Restart one pod if its check fails, but do not restart them all to avoid making it worse.\"<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/bboreham\/status\/1178083887991398400\">Bryan articulated it well.<\/a><\/noindex>: \u201eHaszn\u00e1lj \u00e9l\u0151 tesztel\u00e9st, amikor pontosan tudod, hogy <b>a legjobb, amit tehetsz, az a \u201ele\u00e1ll\u00edtani\u201d az alkalmaz\u00e1st<\/b>\u201e(m\u00e9g egyszer, ne ess t\u00falz\u00e1sba).<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/bboreham\/status\/1178207929540972544\"><img decoding=\"async\" alt=\"A Kubernetes live probe-ok vesz\u00e9lyesek lehetnek\" src=\"\/wp-content\/uploads\/2019\/10\/524122a63bd4acd950bf9fc8aeeb45be.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<h2>Friss\u00edt\u00e9s \u21162 2019-09-29<\/h2>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/Guillaume_Swiss\/status\/1178258781152563200\">A dokument\u00e1ci\u00f3 elolvas\u00e1s\u00e1r\u00f3l a haszn\u00e1lat el\u0151tt<\/a><\/noindex>: l\u00e9trehoztam a megfelel\u0151 k\u00e9r\u00e9st (<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes\/website\/issues\/16607\">feature request<\/a><\/noindex>) a liveness probe-ok dokument\u00e1ci\u00f3j\u00e1nak kieg\u00e9sz\u00edt\u00e9s\u00e9re.<\/p>\n<h2>Fejleszt\u00e9si eszk\u00f6z\u00f6k, amelyek Kubernetesben futnak<\/h2>\n<p>\nOlvasson tov\u00e1bbi inform\u00e1ci\u00f3kat a blogunkban:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/415393\/\">Kubernetes: a pod \u00e9lete<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/425085\/\">7 legjobb kont\u00e9nerhaszn\u00e1lati gyakorlat a Google szerint<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/353272\/\">7 elv a kont\u00e9neralap\u00fa alkalmaz\u00e1sok tervez\u00e9s\u00e9hez<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>Forr\u00e1s: <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.3 - 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\/hu\/blog\/administrirovanie\/liveness-probes-v-kubernetes-mogut-byt-opasny\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"hu_HU\" \/>\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\/hu\/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\udd47A liveness probe-ok a Kubernetes-ben vesz\u00e9lyesek lehetnek | ProHoster","description":"Megjegyz\u00e9s a ford\u00edt\u00f3t\u00f3l: A Zalando f\u0151m\u00e9rn\u00f6ke \u2014 Henning Jacobs \u2014 t\u00f6bbsz\u00f6r is megjegyezte a Kubernetes felhaszn\u00e1l\u00f3i sz\u00e1m\u00e1ra a liveness (\u00e9s readiness) probe-ok c\u00e9lj\u00e1nak meg\u00e9rt\u00e9si probl\u00e9m\u00e1it \u00e9s azok helyes alkalmaz\u00e1s\u00e1t.","canonical_url":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/liveness-probes-v-kubernetes-mogut-byt-opasny","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"hu_HU","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\/hu\/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\/hu\/wp-json\/wp\/v2\/posts\/38965","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/comments?post=38965"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/38965\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media\/29232"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media?parent=38965"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/categories?post=38965"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/tags?post=38965"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}