Kubernetesi parimad praktikad. Kubernetesi elujÔudluse kontrollimine Readiness ja Liveness testide abil

Kubernetesi parimad praktikad. VĂ€ikeste konteinerite loomine
Kubernetesi parimad praktikad. Kubernetesi korraldamine nimespetsiifiliste ruumide abil

Kubernetesi parimad praktikad. Kubernetesi elujÔudluse kontrollimine Readiness ja Liveness testide abil

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.

Kubernetesi parimad praktikad. Kubernetesi elujÔudluse kontrollimine Readiness ja Liveness testide abil

Õ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.

Kubernetesi parimad praktikad. Kubernetesi elujÔudluse kontrollimine Readiness ja Liveness testide abil

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.

Kubernetesi parimad praktikad. Kubernetesi elujÔudluse kontrollimine Readiness ja Liveness testide abil

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 parimad praktikad. Kubernetesi elujÔudluse kontrollimine Readiness ja Liveness testide abil

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“.

Kubernetesi parimad praktikad. Kubernetesi elujÔudluse kontrollimine Readiness ja Liveness testide abil

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.

Kubernetesi parimad praktikad. Kubernetesi elujÔudluse kontrollimine Readiness ja Liveness testide abil

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


Vaata videot

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. pilve VPS arendajatele alates $4,99, ainulaadne sisenemise taseme serverite analoog, mille oleme teie jaoks vĂ€lja mĂ”elnud: Kogu tĂ”de VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps alates $19 vĂ”i kuidas Ă”ieti serverit jagada? (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 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TB alates $199 Hollandi turul! Dell R420 — 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB — alates $99! Lugege, kuidas Luua ettevĂ”tte tasemel infrastruktuur Dell R730xd E5-2650 v4 serveritega, mille hind on 9000 eurot, madala hinnaga?

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster