Kubernetes

Állapotú és hontalan alkalmazások a Kubernetesen

Állapotú és hontalan alkalmazások a Kubernetesen
Fontos szempont, amelyet figyelembe kell venni egy új alkalmazás futtatása előtt, az alkalmazás mögöttes architektúrája. Az ebben az összefüggésben gyakran használt kifejezés az, hogy az alkalmazás „hontalan”, vagy hogy az alkalmazás „állapotszerű”. Mindkét típusnak megvannak a maga előnyei és hátrányai. Kubernetes-fürt lesz a fejünkben, amikor a gyártásban futó alkalmazásról vagy szolgáltatásról beszélünk. Telepíthet egy saját Kubernetes-fürtöt a felhőbe, vagy egy csomópontként futtathatja a számítógépén, hogy gyakorolhasson vele.

Kezdjük a „hontalanság” naiv meghatározásával, majd lassan lépjünk át szigorúbb és valósabb nézetre.

A hontalan alkalmazás az, amely nem áll fenn tartós tároláson. Az egyetlen dolog, amiért a fürt felelős, az a kód és más statikus tartalom, amelyet rajta tárolnak. Ennyi, nem változik az adatbázis, nincs írás és nem marad fájlok a csomag törlésekor.

Az állapotfelmérő alkalmazásnak viszont számos más paramétere van, amelyről a klaszterben állítólag gondoskodnia kell. Vannak dinamikus adatbázisok, amelyek akkor is fennmaradnak a lemezen, ha az alkalmazás offline vagy törölt. Egy elosztott rendszerben, mint a Kubernetes, ez több kérdést vet fel. Részletesen megvizsgáljuk őket, de először tisztázzunk néhány tévhitet.

A hontalan szolgáltatások valójában nem „hontalanok”

Mit jelent, ha egy rendszer állapotát mondjuk? Nézzük meg az automatikus ajtó következő egyszerű példáját.

Az ajtó kinyílik, amikor az érzékelő észleli, hogy valaki közeledik, és becsukódik, ha az érzékelő nem kap releváns bemenetet.

A gyakorlatban a hontalan alkalmazás hasonló a fenti mechanizmushoz. Sokkal több állapota lehet, mint csak zárt vagy nyitott, és sokféle típusú bemenet is összetettebbé, de lényegében azonosá válik.

Megoldhatja a bonyolult problémákat úgy, hogy csak egy bemenetet kap, és olyan műveleteket hajt végre, amelyek mind a bemenettől, mind az állapotától függenek. A lehetséges állapotok száma előre meghatározott.

A hontalanság tehát helytelen elnevezés.

A hontalan alkalmazások a gyakorlatban egy kicsit meg is csalhatnak, ha például a kliens munkameneteiről részleteket mentenek el magukra az ügyfelekre (a HTTP cookie-k nagyszerű példa), és még mindig jó hontalansággal rendelkeznek, ami hibátlanul futtatná őket a fürtön.

Például az ügyfél munkamenetének részletei, például az, hogy mely termékeket mentették el a kosárba, és amelyeket nem ellenőrizték, mind tárolhatók az ügyfélen, és amikor egy munkamenet legközelebb megkezdi, ezeket a lényeges részleteket is felidézzük.

A Kubernetes-fürtön egy hontalan alkalmazáshoz nincs tartós tároló vagy kötet társítva. Műveleti szempontból ez nagyszerű hír. A fürtön belüli különböző hüvelyek függetlenül működhetnek, és egyszerre több kérés érkezik hozzájuk. Ha valami nem stimmel, akkor egyszerűen indítsa újra az alkalmazást, és kis állásidő nélkül visszatér a kezdeti állapotba.

Állami szolgáltatások és a KAP tétel

Az állami szolgáltatásoknak viszont sok-sok éles eset és furcsa probléma miatt kell majd aggódniuk. A csomag legalább egy kötetet tartalmaz, és ha az adott kötetben lévő adatok megsérültek, akkor ez fennáll akkor is, ha az egész fürt újraindul.

Például, ha adatbázist futtat egy Kubernetes-fürtön, akkor az összes tárolónak rendelkeznie kell egy helyi kötetsel az adatbázis tárolásához. Az összes adatnak tökéletes szinkronban kell lennie.

Tehát, ha valaki módosít egy bejegyzést az adatbázisba, és ez az A podonon történt, és egy olvasási kérelem érkezik a B podra, hogy megnézze a módosított adatokat, akkor a B podnak meg kell mutatnia a legfrissebb adatokat, vagy hibaüzenetet kell adnia. Ez a következetesség néven ismert.

Következetesség, egy Kubernetes-klaszterrel összefüggésben azt jelenti minden olvasás megkapja a legfrissebb írást vagy hibaüzenetet.

De ez ellenkezik elérhetőség, az elosztott rendszer egyik legfontosabb oka. A rendelkezésre állás azt jelenti, hogy az alkalmazás éjjel-nappal, a lehető legkevesebb hibával, a lehető legkevesebb tökéletességgel működik.

Azt állíthatjuk, hogy mindez elkerülhető, ha csak egy központi adatbázisa van, amely az összes tartós tárolási igény kezeléséért felelős. Most visszatértünk egyetlen kudarcponthoz, ami egy újabb probléma, amelyet a Kubernetes-fürtöknek eleve meg kellene oldaniuk.

A tartós adatok fürtben történő tárolásának decentralizált módon kell rendelkeznie. Általában hálózati particionálásnak nevezik. Ezenkívül a fürtjének képesnek kell lennie az állapotalapú alkalmazást futtató csomópontok hibáinak túlélésére. Ezt nevezik partíció tolerancia.

Minden Kubernetes-fürtön futtatott állapotfigyelő szolgáltatásnak (vagy alkalmazásnak) egyensúlyban kell lennie e három paraméter között. Az iparban a KAP-tételként ismert, ahol a konzisztencia és a rendelkezésre állás közötti kompromisszumokat a hálózati particionálás jelenlétében mérlegelik.

További hivatkozások

A KAP-tétel további betekintése érdekében érdemes megnéznie ezt a kiváló beszédet, amelyet Bryan Cantrill mondott, aki sokkal közelebbről megvizsgálja az elosztott rendszerek futtatását a termelésben.

Kereskedelmi játékmotorok nyílt forráskódú portjai
Ingyenes, nyílt forráskódú és platformokon átívelő játékmotorok szabadidős programjai felhasználhatók a régi, valamint a meglehetősen friss játékcímek...
A legjobb parancssori játékok Linuxhoz
A parancssor nem csak a legnagyobb szövetséges a Linux használatakor, hanem a szórakozás forrása is lehet, mert sok olyan szórakoztató játék lejátszás...
A legjobb Gamepad Mapping alkalmazások Linuxhoz
Ha egy tipikus billentyűzet és egér beviteli rendszer helyett szeretnél játékokat játszani Linuxon egy játékvezérlővel, van néhány hasznos alkalmazás ...