
Oluline aspekt jaotatud sĂŒsteemide töös on tĂ”rgete kĂ€sitlemine. Kubernetes aitab selle kaudu, kasutades kontrollereid, mis jĂ€lgivad teie sĂŒsteemi olekut ja taaskĂ€ivitavad mittefunksioneerivad teenused. Siiski vĂ”ib Kubernetes sundida teie rakenduste töö lĂ”petamist, et tagada kogu sĂŒsteemi elujĂ”ud. Selles seerias uurime, kuidas aidata Kubernetesel oma tööd tĂ”husamalt teha ja rakenduste seisakuaega vĂ€hendada.
Enne konteinerite kasutuselevĂ”ttu töötasid enamik rakendusi virtuaalsetel vĂ”i fĂŒĂŒsilistel masinatel. Kui rakendus andis tĂ”rke vĂ”i hangus, kulus palju aega jooksva ĂŒlesande peatamiseks ja programmi uuesti laadimiseks. Halvimal juhul pidi keegi selle probleemi kĂ€sitlema kĂ€sitsi öösel, kĂ”ige ebamugavamal ajal. Kui olulist ĂŒlesannet tĂ€itsid vaid 1-2 töömachiini, oli selline tĂ”rge tĂ€iesti vastuvĂ”etamatu.
SeetĂ”ttu hakati kĂ€sitsi taaskĂ€ivitamise asemel kasutama protsessitasandi jĂ€lgimist, et automaatselt taaskĂ€ivitada rakendust selle ebaĂ”nnestumise korral. Kui programm ebaĂ”nnestus, haarab jĂ€lgimisprotsess vĂ€ljumiskoodi ja taaskĂ€ivitab serveri. Selliste sĂŒsteemide, nagu Kubernetes, saabumisega integreeriti see tĂ”rke reageerimise viis lihtsalt infrastruktuuri.
Kubernetes kasutab sĂŒndmuste silmuste âjĂ€lgimine â erinevuste fikseerimine â tegevuse tegemineâ, et veenduda, et ressursid sĂ€ilitavad töökorras oleku konteineritest sĂ”lmedeni.

See tÀhendab, et te ei pea enam kÀsitsi protsesside jÀlgimist kÀivitama. Kui resurss ei lÀbinud tervisekontrolli Health Check, annab Kubernetes sellele lihtsalt automaatselt asenduse. Samuti teeb Kubernetes palju rohkem, kui lihtsalt jÀlgib teie rakenduste tÔrkeid. Ta vÔib luua rakenduse rohkem koopiaid, et need töötaksid erinevates masinates, uuendada rakendust vÔi samaaegselt kÀivitada mitu versiooni teie rakendusest.
SeetĂ”ttu on palju pĂ”hjuseid, miks Kubernetes vĂ”ib katkestada tĂ€iesti terve konteineri töö. NĂ€iteks kui uuendate oma juurutust, peatab Kubernetes aeglaselt vanad podid, samal ajal kui uued kĂ€ivituvad. Kui lĂŒlitate vĂ€lja sĂ”lm, lĂ”petab Kubernetes selle sĂ”lme kĂ”ikide podide töö. LĂ”puks, kui sĂ”lmel saavad ressursid otsa, peatab Kubernetes kĂ”ik podid, et neid ressursse vabastada.
SeetĂ”ttu on vĂ€ga oluline, et teie rakendus lĂ”petaks töö minimaalsete mĂ”jude ja minimaalse taastumisaega lĂ”ppkasutajale. See tĂ€hendab, et enne vĂ€ljalĂŒlitamist peab see salvestama kĂ”ik vajalikud andmed, sulgema kĂ”ik vĂ”rguĂŒhendused, lĂ”petama ĂŒlejÀÀnud tööd ja jĂ”udma teha muid hĂ€davajalikke ĂŒlesandeid.
Praktikas tĂ€hendab see, et teie rakendus peab suutma töödelda SIGTERM sĂ”numit â protsesside lĂ”petamise signaali, mis on vaikimisi signaal Unix-pĂ”histes operatsioonisĂŒsteemides kill utiliidile. Saades seda sĂ”numit, peab rakendus enda töö lĂ”petama.
PĂ€rast seda, kui Kubernetes otsustab podi lĂ”petada, toimub mitmeid sĂŒndmusi. Vaatame ĂŒle iga sammu, mida Kubernetes teeb konteineri vĂ”i podi sulgemisel.
Oletame, et soovime lĂ”petada ĂŒhe podi. Sel hetkel lĂ”petab ta uue liikluse vastuvĂ”tmise â podis töötavad konteinerid ei ole mĂ”jutatud, kuid kogu uus liiklus blokeeritakse.

Vaatame preStop konksu â see on spetsiaalne kĂ€sk vĂ”i HTTP-pĂ€ring, mis saadetakse podi konteineritele. Kui teie rakendus ei sulgu Ă”igesti SIGTERM saamisel, saate kasutada preStop konksu, et lĂ”petada töö Ă”igesti.

Enamik programme lĂ”petab oma töö Ă”igesti SIGTERM signaali saamisel, kuid kui kasutate kolmanda osapoole koodi vĂ”i mingit sĂŒsteemi, mida ei saa tĂ€ielikult kontrollida, on preStop konks suurepĂ€rane viis elegantse sulgemise kutsumiseks ilma rakendust muutmata.
PĂ€rast selle hooki tĂ€itmist saadab Kubernetes konteineritele podi sees SIGTERM signaali, mis annab neile teada, et nad peavad varsti sulgema. Kui nad selle signaali saavad, lĂ€heb teie kood sulgemisprotsessi. See protsess vĂ”ib hĂ”lmata pikaajaliste ĂŒhenduste, nĂ€iteks andmebaasiĂŒhenduste vĂ”i WebSocketi voogude sulgemist, praeguse oleku salvestamist jne.
Isegi kui kasutate preStop hooki, on ÀÀrmiselt oluline kontrollida, mis tĂ€pselt teie rakendusega juhtub, kui saadate sellele SIGTERM signaali, kuidas see kĂ€itub, et sĂŒndmused vĂ”i muud sĂŒsteemi töö muutused, mis on pĂ”hjustatud podi sulgemisest, teid ĂŒllatuseks ei tooks.
Sel hetkel, enne edasiste meetmete vÔtmist, ootab Kubernetes kindlaksmÀÀratud aja, mida nimetatakse terminationGracePeriodSeconds, vÔi aeg, mis on ette nÀhtud korrektseks sulgemiseks pÀrast SIGTERM signaali saamist.

Vaikimisi on see periood 30 sekundit. On oluline mĂ€rkida, et see kestab samal ajal koos preStop hooki ja SIGTERM signaaliga. Kubernetes ei oota, kuni preStop hook ja SIGTERM on lĂ”petatud â kui teie rakendus lĂ”petab töö enne terminationGracePeriodi lĂ”ppu, lĂ€heb Kubernetes kohe jĂ€rgmise sammu juurde. Seega veenduge, et selle perioodi vÀÀrtus sekundites poleks vĂ€iksem kui aeg, mis on vajalik podi korrektseks sulgemiseks, ja kui see ĂŒletab 30s, suurendage perioodi vajalikule vÀÀrtusele YAML-is. Antud nĂ€ites on see 60s.
Ja lĂ”puks, viimane samm â kui konteinerid jĂ€tkavad töö tegemist pĂ€rast terminationGracePeriodi lĂ”ppu, saadavad nad SIGKILL signaali ja eemaldatakse sundkorras. Sel hetkel puhastab Kubernetes ka kĂ”ik muud podi objektid.

Kubernetes lÔpetab podide töö mitmel pÔhjusel, seetÔttu veenduge, et teie rakendus suletakse igal juhul Ôigesti, et tagada teenuse stabiilne toimimine.

Veidi reklaami đ
AitÀh, et olete meiega. Kas teile meeldivad meie artiklid? Kas soovite nÀha rohkem huvitavat sisu? Toetage meid, tellides teenuse vÔi soovitades meid tuttavatele. , ainulaadne entry-level serverite analoog, mille oleme teie jaoks vÀlja mÔelnud: (saadaval RAID1 ja RAID10 variandid, kuni 24 tuuma ja kuni 40GB DDR4).
Dell R730xd on Equinixi Tier IV andmekeskuses Amsterdamis kaks korda odavam? Ainult meie juures Hollandis! Dell R420 â 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB â alates $99! Lugege sellest
Allikas: habr.com
