Kubernetes készség- és élénkségi szonda - legjobb gyakorlatok

Antenna „a festményt nézi” az Unsplash oldalon

A Kubernetes-ben a hüvelyek a legkisebb telepíthető számítási egység, amelyet létrehozni és kezelni lehet. A pod egy vagy több konténer (Docker, rakéta stb.) Csoportja, megosztott tárolóval / hálózattal és a konténerek futtatásának specifikációjával.

A készenléti és élethűség-érzékelők általánosan megnevezhetők a Kubernetes egészségügyi ellenőrzéseinek összefüggésében. A tartályszonda kicsi folyamat, amely időszakosan fut. Ezen szondák eredménye (siker, sikertelen vagy ismeretlen) meghatározza a tároló állapotának Kubernetes perspektíváját. Ezek alapján a Kubernetes eldönti, hogyan kezelje az egyes tartályokat az ellenálló képesség, a magas rendelkezésre állás és a hosszabb üzemidő fenntartása érdekében.

Az egészségügyi ellenőrzés minden elosztott rendszer követelménye!

A Kubernetes egészségügyi ellenőrzése:

A Kubernetes kétféle egészségügyi ellenőrzést kínál: készenlét és életképesség, és mindkettőnek megvan a saját célja. E cikk összefüggésében választja:

  • /.well-known/live - a HTTP élő szonda számára
  • /.ismert / ismert - HTTP készenléti érzékelőhöz

Néhány szóban a HTTP próbaverzió azt jelenti, hogy a Kubernetes meghatározott időközönként végrehajtja a HTTP lekérdezés kéréseket az /.well-known/live és /.well-known/ready oldalon. A válasz állapotkódját használják annak eldöntésére, hogy mit kell tenni a pod segítségével. Ha az állapotkód a [200, 300] intervallumban van, akkor minden rendben. Másképp:

  • ha az élő szonda állapotkódja 4xx vagy 5xx, akkor a pod újraindul
  • Ha a kész szonda állapotkódja 4xx vagy 5xx, akkor a pod egészségtelennek lesz jelölve, és a HTTP forgalom nem továbbadódik rá a megbízhatóság és az üzemidő növelése érdekében.
Ha a konténerek függetlenek az alátámasztási szolgáltatásoktól, akkor a konténerek életképességének és készségének ellenőrzésére ugyanazon a kezelőn kerülhet sor, és az alábbiak nem vonatkoznak.

A Metro Systems Románia - Helyi Megbízhatóság Csapat munkatársaival együtt meghatároztuk az egészségügyi ellenőrzések bevált gyakorlatainak listáját, és azt tanácsoltuk az alkalmazásfejlesztőknek, hogy kövessék ezeket. Ilyen bevált gyakorlatok a következők:

  1. A Live & Ready kezelőknek független funkcióknak kell lenniük!

Mint korábban említettem, a Kubernetes kontextusban telepített minden egyes terméknél 2 kezelőt kell végrehajtani, amelyek HTTP-hívásokra válaszolnak, hogy „élő” és „kész” legyen. Az első legjobb gyakorlat ezeknek a szondáknak az, hogy minden kezelőnek rendelkeznie kell saját funkciójával.

2. Ne válassza leválasztani az „élő” / „kész” logikát az alkalmazástól!

Ez alkalmazandó a munkafeldolgozó alkalmazásokra. A Kubernetes számára fontos tudni, hogy a feldolgozó alkalmazás fut-e vagy sem. Ha az élő / kész logikát egy új folyamatban elválasztották, az eredmény nem meggyőző.

3. Ne valósítson meg logikát az „élő” kezelőn. 200-as állapotot kell visszaadnia, ha a fő szál fut, és 5xx, ha nem.

Ez a szonda Kubernetes tudomására hozza, hogy az alkalmazás életben van-e vagy nem. A döntést a /.well-known/live állapotkódjának ellenőrzésével hozzák meg, és ha az alkalmazást halottnak nyilvánítják, a Kubernetes újraindítja a podot. Megbízhatóság szempontjából az élő érzékelőre adott válasznak igaznak kell lennie, ha az alkalmazás főszála fut és működik, és hamis másképp.

Ebben az összefüggésben a „logika” egyfajta ellenőrzés végrehajtását jelenti az összekapcsolt szolgáltatások felett.

4. Végezzen el logikát a „kész” kezelőben annak érdekében, hogy teljes választ kapjon az alkalmazás készenlétéről.

A kész szonda segítségével a Kubernetes tudja, hogy készen áll-e a pod a HTTP-forgalom fogadására. Fejlesztőként itt fontos megvalósítani néhány logikát, hogy ellenőrizze az alkalmazás összes háttérfüggőségének elérhetőségét. A „kész” kezelő megvalósításakor nagyon fontos tisztán tudni, hogy mit jelent a kész valójában az alkalmazás számára. Más szavakkal, a „kész” kezelőn fontos futtatni minden olyan lépést, amely meghatározza, hogy az alkalmazás készen áll-e a fogadásra és a https-kérelmek feldolgozására. Például, ha az alkalmazásnak kapcsolatot kell létrehoznia egy adatbázissal, hogy készen álljon a HTTP-kérelmek feldolgozására, akkor a készenléti szonda alapvető fontosságú annak ellenőrzéséhez, hogy az adatbázishoz való kapcsolat létrejött-e és használatra kész-e.

Nézzük meg egy konkrét esetet: az alkalmazás elakad, ha külön szálon dolgozik, és a fő szál jól működik. Fejlesztőként tudja, hogy a pod újraindítása meg fogja oldani a problémát, és meggyőzheti a Kubernetes-t, hogy automatikusan elvégzi az Ön számára. Csak annyit kell tennie, hogy ellenőrizze, hogy az alkalmazás válaszol-e az 5xx-rel a készenléti szondán, és kényszerítse az élő érzékelőt legalább 5xx-os válasz visszaadására a Kubernetes-hívások során. Ebben az esetben a Kubernetes újraindítja a podot, mert halottnak tekintik.

5. Ne próbálja megállítani az alkalmazás készenléti állapotát a kész kezelőn. Ezt csak annak ellenőrzésére készítik, hogy az alkalmazás készen áll-e, nem pedig arra, hogy készen álljon.

Azt tanácsoljuk, hogy nincs olyan logika, amely megkísérelné visszaállítani a készenléti állapotot. Ilyen logika veszélyes lehet a rendszer egyes összetevőire.

Következtetések:

Az élő és a kész érzékelők a Kubernetes-ben telepített alkalmazások szíve és lelke. Ezek a szokásos módjai a hipervizorral való kommunikációnak, állapotukról és problémáikról beszélni. Az élő és a készenléti érzékelők nagy teljesítményű fegyverek, amelyekre egy fejlesztőnek és egy alkalmazásnak szüksége van annak biztosítása érdekében, hogy az alkalmazás megbízható és rugalmas.

Külön köszönet Ionut Ilie-nek. Ennek az anyagnak egy része kutatásának és bölcsességének eredménye.