
Jaotatud sĂŒsteemide haldamine vĂ”ib olla keeruline, kuna neis on palju liikmeid, mis pidevalt muutuvad, ja kĂ”ik need peavad Ă”igesti tööle minema, et tagada sĂŒsteemi funktsionaalsus. Kui ĂŒks elementidest rikki lĂ€heb, peab sĂŒsteem selle avastama, mööda minema ja parandama, kĂ”ik automaatselt. KĂ€esolevas "Kubernetes Best Practices" sarjas uurime, kuidas seadistada Readiness ja Liveness teste Kubernetes klastrite elujĂ”udluse kontrollimiseks.
Tervise kontroll (Health Check) on lihtne viis teavitada sĂŒsteemi, kas teie rakenduse eksemplar töötab vĂ”i mitte. Kui teie rakenduse eksemplar ei tööta, ei peaks teised teenused sellele pöörduma ega pĂ€ringuid saatma. Selle asemel peaks pĂ€ring suunatama teisele rakenduse eksemplarile, mis on juba kĂ€ivitunud vĂ”i kĂ€ivitatakse hiljem. Lisaks peab sĂŒsteem teie rakendusele tagastama kaotatud töövĂ”ime.
Kubernetes alustab vaikimisi liikluse suunamist pod'i, kui kĂ”ik pod'i sees olevad konteinerid on kĂ€ivitatud, ja taaskĂ€ivitab konteinerid, kui need kĂŒlmutavad. Esialgu vĂ”ib see vaikimisi sĂŒsteemikĂ€itumine olla piisav, kuid vĂ”ite oma toote juurutamise usaldusvÀÀrsust suurendada, kasutades kohandatud töövĂ”ime kontrollimisi.

Ănneks vĂ”imaldab Kubernetes seda ĂŒsna lihtsalt teha, seega ei ole selliste kontrollide eiramisele mingeid Ă”igustusi. Kubernetes pakub kahte tĂŒĂŒpi tervisekontrolle, kusjuures on oluline mĂ”ista igaĂŒhe rakendamise erinevusi.
Valmiduse test (Readiness) on mÔeldud selleks, et teavitada Kubernetes't teie rakenduse valmisolekust liikluse teenindamiseks. Enne kui Kubernetese teenus lubab liikluse suunata pod'i, peab ta veenduma, et valmiduse kontroll on edukas. Kui valmiduse test ebaÔnnestub, lÔpetab Kubernetes liikluse suunamise pod'i, kuni testimine lÀbib edukalt.
Liveness test teatab Kubernetes'ile, kas teie rakendus on elus vÔi surnud. Esimesel juhul jÀtab Kubernetes selle rahule, teisel juhul eemaldab see surnud pod'i ja asendab selle uuega.
Kujutame ette olukorda, kus teie rakendusel on "soojendamiseks" ja kÀivitamiseks vajalik 1 minut. Teie teenus ei alusta tööd, kuni rakendus on tÀielikult laaditud ja kÀivitatud, kuigi tööprotsess on juba alanud. Samuti tekivad teil probleeme, kui soovite seda juurutamist skaleerida mitme koopiana, kuna need koopiad ei tohi liiklust saada, kuni nad ei ole tÀielikult valmis. Siiski kÀivitab Kubernetes vaikimisi liikluse edastamise kohe pÀrast konteineris protsesside alustamist.
Valmiduse testi Readiness kasutamisel ootab Kubernetes, kuni rakendus on tÀielikult kÀivitatud ja alles siis lubab teenusel edastada liiklust uuele koopiale.

Kujutage ette teistsugust stsenaariumi, kus rakendus hangub pikaks ajaks, lĂ”petades pĂ€ringute teenindamise. Kuna protsess jĂ€tkab töötamist, eeldab Kubernetes vaikimisi, et kĂ”ik on korras, ja jĂ€tkab pĂ€ringute suunamist mitteaktiivsele podile. Kuid Liveness'i kasutamise korral tuvastab Kubernetes, et rakendus ei teeninda enam pĂ€ringuid, ja vaikimisi mĂŒrgib mitteaktiivse pod'i uuesti kĂ€ivitamiseks.

Vaatame, kuidas valmisolekut ja elujĂ”udlust testitakse. On kolm testimise meetodit â HTTP, Command ja TCP. Kontrollimiseks vĂ”ite kasutada ĂŒhte neist. KĂ”ige levinum viis kasutajate testimiseks on HTTP probe.
Isegi kui teie rakendus ei ole HTTP-server, saate ikkagi luua kergekaalulise HTTP-serveri oma rakenduse sees, et suhelda Liveness testiga. PĂ€rast seda hakkab Kubernetes pod'i pingima ja kui HTTP vastus jÀÀb vahemikku 200 vĂ”i 300 ms, tĂ€hendab see, et pod on âterveâ. Vastasel juhul mĂ€rgitakse moodul âhaigeksâ.

Kubernetesi testimise kĂ€igus tĂ€idab Command teie konteineris kĂ€skluse. Kui kĂ€sk tagastab nulli vĂ€ljundkoodi, loetakse konteiner terveks; vastasel juhul, kui vĂ€ljundkood on vahemikus 1 kuni 255, loetakse konteiner âhaigeksâ. See testimismeetod on kasulik, kui te ei saa vĂ”i ei soovi kĂ€ivitada HTTP-serverit, kuid suudate kĂ€ivitada kĂ€su, mis kontrollib teie rakenduse âtervishoiuâ.

Viimane kontrollimehhanism on TCP test. Kubernetes pĂŒĂŒab luua TCP-ĂŒhenduse mÀÀratud pordile. Kui see Ă”nnestub, loetakse konteiner terveks; vastasel juhul loetakse see elujĂ”uetuks. See meetod vĂ”ib olla kasulik, kui teie kasutatav skript toetab TCP, kuid HTTP-pĂ€ringute vĂ”i kĂ€skude tĂ€itmise testimine ei toimi hĂ€sti. NĂ€iteks gRPC vĂ”i FTP on peamised teenused, mida saab kontrollida TCP kaudu.

Testid saab seadistada mitmel viisil erinevate parameetritega. Saate mÀÀrata, kui tihti need peaksid toimuma, millised on edukuse ja ebaĂ”nnestumise lĂ€vevÀÀrtused ning kui kaua oodata vastuseid. Ăksikasjalikum teave on esitatud Readiness ja Liveness testide dokumentatsioonis. Siiski on ĂŒks vĂ€ga tĂ€htis aspekt Liveness testi seadistamisel â testimise algse viivituse initialDelaySeconds seadistamine. Nagu ma mainisin, ebaĂ”nnestunud test viib mooduli taaskĂ€ivitamiseni. SeetĂ”ttu peate veenduma, et testimine ei alga enne, kui rakendus on tööks valmis; vastasel juhul hakkab see tsĂŒkliliselt taaskĂ€ivituma. Soovitan kasutada P99 kĂ€ivitusaega vĂ”i keskmist rakenduse kĂ€ivitusaega vahemikust. Ărge unustage seda vÀÀrtust kohandada, kui teie rakenduse kĂ€ivitusaeg muutub kiiremini vĂ”i aeglasemaks.
Enamik spetsialiste kinnitab, et Health Check on kohustuslik kontroll igasuguste hajutatud sĂŒsteemide jaoks ja Kubernetes ei ole erand. Teenuste 'tervishoiu' kontrollimise kasutamine tagab Kubernetes'i usaldusvÀÀrse ja tĂ”rgeteta toimimise ning see ei ole kasutajatele mingit vaeva.
Peagi on see tulemasâŠ

Veidi reklaami đ
AitĂ€h, et olete meiega. Kas teile meeldivad meie artiklid? Kas soovite nĂ€ha rohkem huvitavaid materjale? Toetage meid, tehes tellimuse vĂ”i soovitades meid tuttavatele. , ainulaadne sisenemise taseme serverite analoog, mille oleme teie jaoks vĂ€lja mĂ”elnud: (saadaval on RAID1 ja RAID10 variandid, kuni 24 sĂŒdamikku ja kuni 40GB DDR4).
Kas Dell R730xd on kaks korda odavam Equinixi Tier IV andmete keskuses Amsterdamis? Ainult meie juures Hollandi turul! Dell R420 â 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB â alates $99! Lugege, kuidas
Allikas: habr.com
