Parimad praktikad Kuberneteses. Ressursside pÀringute ja piirangute seadistamine

Parimad Kubernetes'i praktikad. VĂ€ikeste konteinerite loomine
Kubernetes'i parimad tavad. Kubernetes'i korraldamine nimede ruumi abil
Kubernetes'i parimad praktikad. Kubernetes'i elujÔu kontrollimine Readiness ja Liveness testide abil

Iga Kubernetes ressursi jaoks on vĂ”imalik seadistada kahte tĂŒĂŒpi nĂ”udeid — Requests ja Limits. Esimene kirjeldab minimaalset nĂ”uet vabade ressurside olemasolu kohta sĂ”lmides, mis on vajalik konteineri vĂ”i pod'i kĂ€ivitamiseks, teine ​​piirab jĂ€medalt ressursse, mis on konteinerile kergesti kĂ€ttesaadavad.

Kui Kubernetes planeerib pod'i, on vÀga oluline, et konteineritel oleks piisavalt ressursse normaalseks töötamiseks. Kui plaanite suurte rakenduste juurutamist piiratud ressurssidega sÔlmisse, vÔib juhtuda, et see ei tööta, kuna sÔlmel on mÀlu otsas vÔi tal ei ole piisavalt protsessorivÔimet. Selles artiklis vaatleme, kuidas saab lahendada arvutusvÔimsuse puudumist ressursinÔuete ja piirangute abil.

NĂ”uded Requests ja piirangud Limits on mehhanismid, mida Kubernetes kasutab selliste ressursside haldamiseks nagu protsessor ja mĂ€lu. Requests on see, mille alusel konteiner garantii alusel saab nĂ”utud ressursi. Kui konteiner nĂ”uab ressurssi, siis Kubernetes plaanib selle ainult sellele sĂ”lmele, mis suudab seda pakkuda. Piirangud Limits kontrollivad, et konteineri poolt nĂ”utud ressursid ei ĂŒletaks kunagi kindlaksmÀÀratud vÀÀrtust.

Parimad praktikad Kuberneteses. Ressursside pÀringute ja piirangute seadistamine

Konteiner vĂ”ib arvutusvĂ”imet suurendada ainult teatud piirini, pĂ€rast mida see piirdub. Vaatame, kuidas see toimib. Seega on olemas kaks ressurssi — protsessor ja mĂ€lu. Kubernetes'i planeerija kasutab nende ressursside andmeid, et vĂ€lja selgitada, kus teie pod'id kĂ€ivitada. TĂŒĂŒpiline ressursside spetsifikatsioon pod'i jaoks nĂ€eb vĂ€lja jĂ€rgmiselt.

Parimad praktikad Kuberneteses. Ressursside pÀringute ja piirangute seadistamine

Iga konteiner podis saab seada oma kehtestatud nĂ”uded ja piirangud, mis kĂ”ik on liituvad. Protsessori ressursid mÀÀratakse millikraadi kaupa. Kui teie konteiner vajab kĂ€ivitamiseks kahte tĂ€isprotsessori tuuma, peate seadistama vÀÀrtuse 2000m. Kui aga konteiner vajab vaid 1/4 tuuma vĂ”imsust, on vÀÀrtus 250m. Pidage meeles, et kui mÀÀrate protsessoriressursi vÀÀrtuse, mis ĂŒletab suurima sĂ”lme tuumade arvu, ei kavandata teie poodi ĂŒldse. Sarnane olukord tekib, kui teil on pod, mis vajab nelja tuuma, ja Kubernetes klaster koosneb vaid kahest pĂ”hisest virtuaalmasinast.

Kui teie rakendus ei ole spetsiaalselt loodud mitme tuuma eeliste kasutamiseks (millele tulevad meelde sellised programmid nagu keerulised teaduslikud arvutused ja andmebaasioperatsioonid), siis parim praktika on seadistada CPU Requests vÀÀrtuseks 1 vĂ”i madalam, kĂ€ivitades rohkem replikaid skaleeritavuse saavutamiseks. See lahendus annab sĂŒsteemile suurema paindlikkuse ja usaldusvÀÀrsuse.

Kui rÀÀkida protsessori piirangutest, siis asjad muutuvad huvitavamaks, kuna see on kokku surutav ressurss. Kui teie rakendus hakkab lĂ€henema protsessorivĂ”imsuse piirile, hakkab Kubernetes teie konteinerit aeglustama, kasutades CPU Throttling'ut — protsessori sageduse vĂ€hendamist. See tĂ€hendab, et protsessor on kunstlikult piiratud, andes rakendusele potentsiaalselt halvemad jĂ”udluskaumad, kuid protsess ei lĂ”petata ega katkestata.

MĂ€lu ressursid mÀÀratakse baitides. TĂŒĂŒpiliselt mÔÔdetakse vÀÀrtust seadistustes mebibaitide Mib kaupa, kuid vĂ”ite mÀÀrata mistahes vÀÀrtuse alates baitidest kuni petabaitideni. Siin kehtib sama olukord nagu protsessoriga — kui mÀÀrate mĂ€lunĂ”ude, mis ĂŒletab teie sĂ”lmede mĂ€lumahtu, ei kavandata selle pod'i tĂ€itmist. Kuid erinevalt protsessoriressurssidest ei ole mĂ€lu kokku surutav, kuna pole mingit viisi selle kasutamise piiramise kohaldamiseks. SeetĂ”ttu peatatakse konteineri tĂ€itmine, kui see ĂŒletab talle mÀÀratud mĂ€lu.

Parimad praktikad Kuberneteses. Ressursside pÀringute ja piirangute seadistamine

Oluline on meeles pidada, et te ei saa konfigureerida pĂ€ringuid, mis ĂŒletavad ressursside suurust, mida teie sĂ”lmed saavad pakkuda. GKE virtuaalmasinate ĂŒhiste ressursside omaduste kohta leiate teavet allpool olevatest linkidest videoaluses.

Ideaalsetes konteineri seadistuste maailmas piisaks vaikeseadistustest, et töövood sujuksid. Kuid reaalne maailm pole selline, inimesed vĂ”ivad unustada ressursside kasutamise seadistamise vĂ”i hĂ€kkerid seadistavad pĂ€ringud ja piirangud, mis ĂŒletavad infrastruktuuri tegelikke vĂ”imalusi. Selliste stsenaariumide vĂ€ltimiseks saab seadistada ressursside kvooti ResourceQuota ja piirangute vahemikke LimitRange.

PĂ€rast nimede loomist saab neid blokeerida kvotidega. NĂ€iteks kui teil on nimed prod ja dev, kasutatakse mustrit, mille kohaselt on tootmisalustes kvotid ĂŒldse puuduvad, samas kui arenduses on kvotid vĂ€ga ranged. See vĂ”imaldab prod-l Ă€kilise liikluse suurenemise korral kogu olemasoleva ressursi Ă€ra vĂ”tta, blokeerides tĂ€ielikult dev-i.

Ressursikvoot vÔib vÀlja nÀha selline. Selles nÀites on 4 sektsiooni - need on 4 allolevat koodirida.

Parimad praktikad Kuberneteses. Ressursside pÀringute ja piirangute seadistamine

Vaadakem igaĂŒht neist. Requests.cpu on maksimaalne kombineeritud protsessoriressursside pĂ€ringute arv, mis vĂ”ib tulla kĂ”igilt nimede konteineritelt. Selles nĂ€ites vĂ”ivad teil olla 50 konteinerit 10m pĂ€ringutega, viis konteinerit 100m pĂ€ringutega vĂ”i lihtsalt ĂŒks konteiner 500m pĂ€ringuga. Niikaua, kui selle nime ruumi total requests.cpu jÀÀb alla 500m, lĂ€heb kĂ”ik hĂ€sti.

PĂ€ritud mĂ€lu requests.memory on maksimaalne kombineeritud mĂ€lu pĂ€ringu suurus, mida vĂ”ivad sisaldada kĂ”ik konteinerid nimede ruumis. Nagu eelnevas nĂ€ites, vĂ”ite omada 50 konteinerit 2 MiB, viis konteinerit 20 MiB vĂ”i ĂŒhe konteineri 100 MiB, kuni kogu pĂ€ritud mĂ€lu alal on vĂ€hem kui 100 mebibaiti.

Limits.cpu on maksimaalne kombineeritud protsessorivÔimsuse vÀÀrtus, mida saavad kasutada kÔik konteinerid nimede ruumis. Seda vÔib pidada protsessorivÔimsuse pÀringute piiriks.

LĂ”puks, limits.memory on maksimaalne kogus ĂŒldmĂ€lu, mida vĂ”ivad kasutada kĂ”ik konteinerid nimekirjas. See on kogu mĂ€lakuude piirang.
Niisiis, vaikimisi töötavad konteinerid Kubernetes'i klastris piiramatute arvutusressurssidega. Ressursikvootide abil saavad klassi administraatorid piirata ressursikasutust ja nende loomist nimekirjade pĂ”hjal. Nimekirjas vĂ”ib podi vĂ”i konteineri moodul tarbida nii palju CPU ja mĂ€lu vĂ”imsust, kui on mÀÀratud nimekirja ressursside kvoodis. Siiski on mure, et ĂŒks pod vĂ”i konteiner vĂ”ib monopoliseerida kĂ”ik olemasolevad ressursid. Selle olukorra vĂ€ltimiseks kasutatakse piiride vahemikku limit Range - ressursside jaotamise piirangute poliitikat (podide vĂ”i konteinerite jaoks) nimekirjas.

Piiride vahemik annab piirangud, mis vÔivad:

  • tagada minimaalne ja maksimaalne arvutusressursside kasutamine iga mooduli vĂ”i konteineri jaoks nimekirjas;
  • sunniviisiliselt tĂ€ita minimaalne ja maksimaalne salvestusmahu pĂ€ring Storage Request iga PersistentVolumeClaim jaoks nimekirjas;
  • sunniviisiliselt mÀÀrata suhe pĂ€ringu Request ja piirangu Limit vahel ressursi nimekirjas;
  • seada Requests/Limits vaikevÀÀrtused arvutusressurssidele nimekirjas ja automaatselt rakendada neid konteinerites töö ajal.

N niisiis, vÔite luua piiride vahemiku oma nimekirjas. Erinevalt kvoodist, mis katab kogu nimekirja, kasutatakse Limit Range individuaalsetele konteineritele. See vÔib takistada kasutajate loomast tÀiesti vÀikeseid vÔi vastupidi, hiiglaslikke konteinerite nimekirjas. Piiride vahemik Limit Range vÔib vÀlja nÀha selline.

Parimad praktikad Kuberneteses. Ressursside pÀringute ja piirangute seadistamine

Nagu eelnevas juhul, on siin neli sektsiooni. Vaatame igaĂŒht lĂ€hemalt.
Default sektsioonis on mÀÀratud vaikimisi piirangud konteinerile podis. Kui mÀÀrate need vÀÀrtused piiride vahemikus, siis kÔik konteinerid, mille jaoks neid vÀÀrtusi pole selgelt mÀÀratud, jÀrgivad vaikimisi vÀÀrtusi.

Vaikimisi on lĂ”igul defaultRequest mÀÀratud konteinerite vaikekĂŒsimused pod'is. JĂ€llegi, kui seadistate need vÀÀrtused piirmÀÀrade vahemikku, kasutatakse vaikimisi neid vÀÀrtusi kĂ”igi konteinerite puhul, millele neid parameetreid selgelt ei mÀÀratud.

LÔigus max on mÀÀratud maksimaalsed piirangud, mida saab seada konteinerile pod'is. LÔigu default ja konteineri piirangud ei tohi olla kÔrgemad kui see piir. Oluline on mÀrkida, et kui on seadistatud max vÀÀrtus ja lÔigul default puudub, siis maksimaalne vÀÀrtus muutub vaikimisi vÀÀrtuseks.

LÔigus min on mÀÀratud minimaalseteks pÀringuteks, mida saab seada konteinerile pod'is. Sellega seoses ei tohi lÔigus default ja konteineri pÀringud olla madalamad kui see piir.

JÀllegi, on oluline mÀrkida, et kui see vÀÀrtus on seadistatud, kuid vÀÀrtus default puudub, siis minimaalne vÀÀrtus muutub vaikimisi pÀringuks.

KokkuvĂ”ttes kasutab Kubernetes ressursside pĂ€ringuid teie töökoormuste tĂ€itmiseks. Et saaksite oma konteinerid Ă”igesti seadistada, on ÀÀrmiselt oluline mĂ”ista, kuidas see töötab. Oletame, et soovite kĂ€ivitada mitmeid mooduleid oma klastri sees. Oletades, et pod'i spetsifikatsioonid on kehtivad, kasutatakse Kubernetesis tsĂŒklitöötlust sĂ”lme valimiseks töökoormuse tĂ€itmiseks.

Parimad praktikad Kuberneteses. Ressursside pÀringute ja piirangute seadistamine

Kubernetes kontrollib, kas sĂ”lmel Node 1 on piisavalt ressursse konteinerite pĂ€ringute tĂ€itmiseks, ja kui ei, siis lĂ€heb jĂ€rgmisele sĂ”lmele. Kui aga ĂŒkski sĂ”lm sĂŒsteemis ei suuda pĂ€ringutele vastata, lĂ€hevad pod'id ooteseisundisse Pending state. Google Kubernetes Engine'i automaatse sĂ”lmede skaala funktsiooniga suudab GKE automaatselt tuvastada ooteseisundi ja luua veel mĂ”ned lisasĂ”lmed.

Kui hiljem tekib sĂ”lmede ĂŒlejÀÀk, siis automaatse skaala funktsioon vĂ€hendab nende arvu, et sÀÀsta raha. Just seetĂ”ttu plaanib Kubernetes pod'e pĂ€ringute alusel. Kuid piir vĂ”ib olla suurem kui pĂ€ringud ja mĂ”nel juhul vĂ”ib sĂ”lm tegelikult ressursid Ă€ra kasutada. Me nimetame seda seisundit ĂŒlekompenseerimise seisundiks.

Parimad praktikad Kuberneteses. Ressursside pÀringute ja piirangute seadistamine

Nagu ma juba ĂŒtlesin, kui jutt on protsessorist, hakkab Kubernetes piirama pod'e. Iga pod saab tĂ€pselt nii palju, kui ta on palunud, kuid kui ta ei saavuta limiiti, siis rakendatakse tĂ”kestamist.

MĂ€luressursside osas peab Kubernetes tegema otsuseid selle kohta, millised pod'id eemaldada ja millised sĂ€ilitada, kuni te vabastate sĂŒsteemiressursse, vastasel juhul laguneb kogu sĂŒsteem.

Kujutame ette olukorda, kus teil on masin, mis on ammendanud mĂ€lu limiidi – kuidas toimib sel juhul Kubernetes?

Kubernetes otsib pod'e, mis kasutavad rohkem ressursse, kui nad on palunud. Nii et kui teie konteineritel pole ĂŒldse palveid, tĂ€hendab see, et nad kasutavad vaikimisi rohkem, kui nad palusid, lihtsalt sellepĂ€rast, et nad ei ole ĂŒldse midagi palunud! Sellised konteinerid on peamised kandidaadid sulgemiseks. JĂ€rgmistena on kandidaadid konteinerid, mis on rahuldanud kĂ”ik oma palved, kuid on endiselt allpool maksimaalset limiiti.

Seega, kui Kubernetes leiab mitu pod'i, mis on ĂŒletanud oma palveparameetreid, sorteerib ta need prioriteedi jĂ€rgi ja seejĂ€rel eemaldab madalaima prioritiseerumisega moodulid. Kui kĂ”ik moodulid on sama prioriteediga, lĂ”petab Kubernetes töö nende pod'ide puhul, mis on oma palveid rohkem ĂŒletanud kui teised pod'id.

VĂ€ga harvadel juhtudel vĂ”ib Kubernetes katkestada pod'e, mis on endiselt oma palvete piires. See vĂ”ib juhtuda, kui sellised sĂŒsteemi kriitilised komponendid nagu Kubeleti agent vĂ”i Docker hakkavad tarbima rohkem ressursse, kui neile on ette nĂ€htud.
Seega, vÀikeste ettevÔtete algusfaasis vÔib Kubernetes klaster suurepÀraselt töötada ilma ressursipÀringute ja piirangute seadmiseks, kuid kui teie meeskonnad ja projektid hakkavad kasvama, vÔite sattuda sellistes valdkondades probleemidesse. RessursipÀringute ja piirangute lisamine teie moodulitesse ja nimedesse nÔuab vÀga vÀhe tÀiendavaid jÔupingutusi ja vÔib pÀÀsta teid paljudest muredest.

Kubernetes parimad praktikad. Õige katkestamine Terminate

MĂ€ngi videot

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. Pilve VPS arendajatele alates $4.99, ainulaadne entry-level 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 jagada serverit Ôigesti? (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 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TB alates $199 Hollandis! Dell R420 — 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB — alates $99! Lugege sellest Kuidas luua ettevĂ”tte tasemel infrastruktuuri, kasutades Dell R730xd E5-2650 v4 servereid, mille hind on 9000 eurot, taskukohase hinna eest?

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster