Kubernetes parimad praktikad. Korralik lÔpetamine Terminate

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
Kubernetesi parimad praktikad. Ressursside pÀringute ja piirangute seadistamine

Kubernetes parimad praktikad. Korralik lÔpetamine Terminate

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.

Kubernetes parimad praktikad. Korralik lÔpetamine Terminate

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.

Kubernetes parimad praktikad. Korralik lÔpetamine Terminate

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.

Kubernetes parimad praktikad. Korralik lÔpetamine Terminate

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.

Kubernetes parimad praktikad. Korralik lÔpetamine Terminate

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 parimad praktikad. Korralik lÔpetamine Terminate

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

Parimad praktikud Kuberneteses. VĂ€listeenuste kaardistamine

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