
Oluline aspekt hajutatud sĂŒsteemide töös on tĂ”rke kĂ€sitlemine. Kubernetes aitab sellega, kasutades kontrollereid, mis jĂ€lgivad teie sĂŒsteemi seisundit ja taaskĂ€ivitavad mittetöötavaid teenuseid. Siiski vĂ”ib Kubernetes sundida teie rakenduste töötamise lĂ”petamist, et tagada sĂŒsteemi ĂŒldine elujĂ”ud. Selles seerias vaatleme, kuidas aidata Kubernetesel oma tööd tĂ”husamalt teha ja rakenduste seisakuaega vĂ€hendada.
Enne konteinerite kasutuselevĂ”ttu töötasid enamik rakendusi virtuaal- vĂ”i fĂŒĂŒsilistel masinatel. Kui rakendus krahhis vĂ”i hangus, kulus tĂ€itmise peatamiseks ja programmi uuesti laadimiseks palju aega. Halvimal juhul pidi keegi selle probleemi kĂ€sitlema kĂ€sitsi öösel, kĂ”ige ebasobivamal ajal. Kui olulist ĂŒlesannet tĂ€ideti vaid 1-2 töömasina poolt, oli tĂ”rge tĂ€iesti talumatu.
SeetĂ”ttu hakkasime manuaalse taaskĂ€ivitamise asemel kasutama protsesside tasandi jĂ€lgimist, et automaatselt rakendust uuesti kĂ€ivitada, kui see ebaĂ”nnestub. Kui programm viga annab, salvestab jĂ€lgimisprotsess exit-koodi ja taaskĂ€ivitab serveri. Selliste sĂŒsteemide nagu Kubernetes tekkimisega on see sĂŒsteemide tĂ”rgete reageerimise viis lihtsalt infrastruktuuri integreeritud.
Kubernetes kasutab sĂŒndmuste silmust "jĂ€lgimine â erinevuste fikseerimine â tegevuse tegemine", et veenduda, et ressursid sĂ€ilitavad töövĂ”ime konteineritest otse sĂ”lmedeni.

See tÀhendab, et te ei pea enam kÀsitsi protsesside jÀlgimist kÀivitama. Kui ressurss ei lÀbinud Health Check'i tervisekontrolli, pakub Kubernetes sellele automaatselt asendust. Samal ajal teeb Kubernetes palju rohkem, kui lihtsalt jÀlgib teie rakenduste tÔrkeid. See suudab luua rohkem rakenduse koopiaid töötamiseks mitmel masinal, uuendada rakendust vÔi kÀivitada samaaegselt mitu versiooni teie rakendusest.
SeetÔttu on palju pÔhjuseid, miks Kubernetes vÔib tÀiesti terve konteineri töö katkestada. NÀiteks kui vÀrskendate oma juurutust, lÔpetab Kubernetes aeglaselt vanade podide töö, samal ajal kui uued kÀivituvad. Kui keelate sÔlme, lÔpetab Kubernetes selle sÔlme kÔikide podide töö. LÔpuks, kui sÔlmel jÀÀb ressursse puudu, katkestab Kubernetes kÔik podid, et neid ressursse vabastada.
Seega on vĂ€ga oluline, et teie rakendus katkestaks töö minimaalsete mĂ”judega lĂ”ppkasutajale ja vĂ”imalikult lĂŒhikese taastumisaajaga. See tĂ€hendab, et enne katkestamist peab see salvestama kĂ”ik vajalikud andmed, sulgema kĂ”ik vĂ”rguĂŒhendused, lĂ”petama jĂ€relejÀÀnud tööd ja tegema kĂ”ik muud hĂ€davajalikud toimingud.
Praktikas tĂ€hendab see, et teie rakendus peab suutma töödelda SIGTERM sĂ”numit - protsessi lĂ”petamise signaali, mis on UNIX-i perekonna operatsioonisĂŒsteemi kill utiliidi vaike signaal. Saades selle teate, peaks rakendus katkestama.
Kui Kubernetes otsustab pod'i lĂ”petada, toimub mitmeid sĂŒndmusi. Vaatame iga sammu, mida Kubernetes astub konteineri vĂ”i pod'i sulgemisel.
Oletame, et soovime lĂ”petada ĂŒhe pod'i. Sel hetkel lĂ”petab see uue liikluse vastuvĂ”tmise â pod'is töötavad konteinerid jÀÀvad puutumatuks, kuid kogu uus liiklus blokeeritakse.

Vaatame preStop hook'i â see on eriline kĂ€sk vĂ”i HTTP-pĂ€ring, mis saadetakse pod'i konteineritele. Kui teie rakendus ei tsipa korrektset lahkumiskĂ€sku SIGTERM saadud, vĂ”ite kasutada preStop'i korrektseks lĂ”petamiseks.

Enamik programme lĂ”petab oma töö korrektseks, kui nad saavad SIGTERM signaali, kuid kui kasutate kolmanda osapoole koodi vĂ”i mingit sĂŒsteemi, mida te tĂ€ielikult ei kontrolli, on preStop hook suurepĂ€rane vĂ”imalus elegantseks vĂ€ljalĂŒlitamiseks ilma rakendust muutmata.
PĂ€rast selle Kubernetes'i hook'i tĂ€itmist saadab Kubernetes konteineritele pod'is SIGTERM signaali, mis annab neile teada, et nad varsti vĂ€lja lĂŒlitatakse. Saades selle signaali, lĂ€heb teie kood vĂ€lja lĂŒlitamise protsessi. See protsess vĂ”ib hĂ”lmata pikaajaliste ĂŒhenduste, nagu andmebaasiĂŒhenduse vĂ”i WebSocketi voogude, peatamist, praeguse oleku salvestamist jne.
Isegi kui kasutate preStop hook'i, on vĂ€ga oluline kontrollida, mis teie rakenduses juhtub, kui saadate sellele SIGTERM signaali, ja kuidas see end sel ajal kĂ€itub, et sĂŒndmused vĂ”i muudatused sĂŒsteemis, mis on pĂ”hjustatud pod'i vĂ€lja lĂŒlitamisest, teid ĂŒllataksid.
Selles etapis, enne edasiste tegevuste astumist, ootab Kubernetes mÀÀratud aja, mida nimetatakse terminationGracePeriodSecond-iks, vĂ”i SIGTERM signaali saamisel korrektseks vĂ€ljalĂŒlitamiseks ette nĂ€htud ajaks.

Vaikimisi on see periood 30 sekundit. Oluline on mĂ€rkida, et see kestab samaaegselt preStop hook'i ja SIGTERM signaaliga. Kubernetes ei oota, kuni preStop hook ja SIGTERM on lĂ”pule viidud â kui teie rakendus lĂ”petab enne TerminationGracePeriod'i lĂ”ppu, liigub Kubernetes kohe jĂ€rgmise sammu juurde. SeetĂ”ttu veenduge, et perioodi vÀÀrtus sekundites oleks vĂ€hemalt sama pikk, kui on vajalik pod'i korrektsel vĂ€ljalĂŒlitamiseks, ja kui see ĂŒletab 30 sekundit, suurendage perioodi soovitud vÀÀrtuseni YAML-is. Antud nĂ€ites on see 60 sekundit.
Ja lĂ”puks, viimane samm â kui konteinerid jĂ€tkavad töötamist pĂ€rast terminationGracePeriod'i möödumist, saadavad nad SIGKILL signaali ja eemaldatakse sundlikult. Sel hetkel puhastab Kubernetes ka kĂ”ik ĂŒlejÀÀnud pod'i objektid.

Kubernetes lÔpetab podide töö mitmel pÔhjusel, seega veenduge, et teie rakendus lÔpetatakse igal juhul korrektselt, et tagada teenuse stabiilne toimimine.

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
