
Praegu ĂŒha rohkem ettevĂ”tteid viib oma infrastruktuuri fĂŒĂŒsilistelt serveritelt ja oma virtuaalsetelt masinatelt pilvede peale. Sellist lahendust on lihtne selgitada: pole vaja muretseda riistvara pĂ€rast, kluster on hĂ”lpsasti konfigureeritav erinevate viiside kaudu... ja mis kĂ”ige tĂ€htsam â olemasolevad tehnoloogiad (nt Kubernetes) vĂ”imaldavad arvutusvĂ”imsust lihtsalt skaleerida vastavalt koormusele.
Finantsaspekt on alati oluline. Tööriist, millest selles artiklis rÀÀgitakse, on mÔeldud eelarvete vÀhendamiseks, kasutades pilveinfrastruktuuri koos Kubernetes'ega.
Sissejuhatus
â kalifornialane idufirma, mille asutajad on endised Google'i töötajad, kes arendab lahendust pilveteenuste infrastruktuuri kulude arvestamiseks (Kubernetes'sisese kluster + ĂŒhisressursid), kitsaskohtade leidmiseks klustere seadistustes ja vastavate teavituste saatmiseks Slacki.
Meil on kliente, kellel on Kubernetes nii tuttavates AWS ja GCP pilvedes kui ka haruldases Linuxi kogukonnas Azure's â kokkuvĂ”ttes kĂ”ik platvormid, mida Kubecost toetab. MĂ”ne jaoks arvutame me kulud siseklastri teenuste pĂ”hjal iseseisvalt (meetodi jĂ€rgi, mis sarnaneb Kubecost kasutatavale), samuti jĂ€lgime infrastruktuuri kulusid ja pĂŒĂŒame neid optimeerida. SeetĂ”ttu on loogiline, et meid huvitab selliste ĂŒlesannete automatiseerimise vĂ”imalus.
Kubecost'i pĂ”hikomplekti allikas on avatud Open Source litsentsi (Apache License 2.0) tingimustes. Seda saab kasutada vabalt, ja saadud funktsioonide hulk peaks olema piisav vĂ€ikeste projektide jaoks. Kuid Ă€ri on Ă€ri: ĂŒlejÀÀnud toode on suletud ja selle kasutamiseks on vajalik , mis hĂ”lmavad ka Ă€rilist tuge. Lisaks pakuvad autorid tasuta litsentsi vĂ€ikestele klustritele (1 kluster 10 sĂ”lmega â artikli kirjutamise ajal laienes see piirang 20 sĂ”lmele) vĂ”i prooviperioodi tĂ€ielike funktsioonidega 1 kuuks.
Kuidas kÔik on korraldatud
Nii et Kubecost'i pĂ”hiosa on rakendus , mis on kirjutatud Go keeles. Helm-chart, mis kirjeldab kogu sĂŒsteemi, nimetatakse ja on oma olemuselt kogumik cost-model'ist koos Prometheuse, Grafana ja mitmete juhtpaneelidega.
Ăldiselt on cost-modelil oma veebiliides, mis nĂ€itab graafikuid ja ĂŒksikasjalikku statistikat kulude kohta tabelivormis, samuti loomulikult nĂ”uandeid kulutuste optimeerimiseks. Grafana armatuurlaudade esitatud andmed on Kubecosti arengus varasem etapp ja sisaldavad suuresti samu andmeid nagu cost-model, lisades neile tavalise statistika CPU/mĂ€lu/vĂ”rgu/diskiruumi kasutuse kohta klastris ja selle komponentides.
Kuidas Kubecost töötab?
- Cost-model saab pilveteenuste pakkujatelt API kaudu hoolduskulude hinnad.
- SeejĂ€rel arvutatakse sĂ”ltuvalt sĂ”lme riistvaratĂŒĂŒbist ja piirkonnast sĂ”lmede maksumus.
- Iga lĂ”pp-podi jaoks arvutatakse protsessori kasutamise, ĂŒhe gigabaidi mĂ€lu ja ĂŒhe gigabaidi andmehoidla tunni hind, lĂ€htudes sĂ”lmest, millega see töötas, vĂ”i sĂ€ilitamisklassist.
- Eraldi podide töö maksumusest arvutatakse tasu nimede, teenuste, Deployment'ite, StatefulSet'ite kohta.
- Statistika arvutamiseks kasutatakse kube-state-metrics'i ja node-exporteri andmeid.
Oluline on arvestada, et Kubecost arvutab vaikimisi ainult Kuberneteses olemasolevaid ressursse. VÀlised andmebaasid, GitHubi serverid, S3 hoidlad ja muud teenused, mis ei asu klastris (kuigi need vÔivad asuda samas pilvis), ei ole tema jaoks nÀhtavad. Siiski on GCP ja AWS jaoks vÔimalik lisada oma teenusekonto vÔtmed ja arvutada kÔike koos.
Paigaldamine
Kubecosti toimimiseks on vajalik:
- Kubernetes versioon 1.8 ja uuem;
- kube-state-metrics;
- Prometheus;
- node-exporter.
Nii on juhtunud, et meie klastrites olid kÔik need tingimused enne tÀidetud, seega osutus piisavaks lihtsalt Ôigete lÔpp-punktide nÀitamine Prometheusele. Siiski sisaldab ametlik Helm-chart kubecost kÔike vajalikku, et alustada ka "paljas" klaster.
Kubecosti saab installida mitmel viisil:
- Standardsed installimise meetodid on kirjeldatud arendaja veebisaidil. Tuleb lisada Helm-repositoorium cost-analyzer, pÀrast mida tuleks installida chart. JÀÀb vaid port enda jaoks suunata ja viimistleda seadistused soovitud olekusse kÀsitsi (kubectl kaudu) ja/vÔi cost-modeli veebiliidese abil.
Kuna me ei kasuta kolmandate osapoolte valmis konfiguratsioone, ei ole me seda meetodit isegi proovinud, kuid see nĂ€eb vĂ€lja kui hea variant, et lihtsalt ise proovida. Kui teil on juba osa sĂŒsteemi komponente paigaldatud vĂ”i soovite tĂ€iendavat kohandamist, tasub kaaluda teist teed.
- Kasutada pÔhimÔtteliselt , aga konfigureerida ja paigaldada see ise iga mugava meetodi kaudu.
Nagu juba mainitud, sisaldab see chart lisaks kubecost'ile ka Grafana ja Prometheuse chart'e, mida saab samuti soovi korral seadistada.
Chartis olev
values.yamlcost-analyzer vÔimaldab konfigureerida:- cost-analyzer'i komponente, mida on vaja juurutada;
- oma endpoinit Prometheusele (kui see teil juba olemas on);
- domeene ja muid ingressi seadistusi cost-model'i ja Grafana jaoks;
- annotatsioonid pod'ide jaoks;
- vajaduse kasutamise ja nende suuruse osas pĂŒsivates salvestustes.
TÀielik saadaval olevate konfigureerimisvÔimaluste nimekiri koos kirjeldustega on .
Kuna kubecost pÔhiversioonis ei piirata juurdepÀÀsu, on vajalik kohe seada Àra basic-auth veebipaneelile.
- Paigaldada ainult sĂŒsteemi tuum â cost-model. Selleks on vaja, et klastris oleks paigaldatud Prometheus ja selle aadressi vastav vÀÀrtus tuleks mÀÀrata muutujasse
prometheusEndpointHelmile. PÀrast seda rakendatakse klastris.Taaskord tuleb kÀsitsi lisada Ingress koos basic-auth'iga. Ja lÔpuks on vajalik lisada sektsioon cost-model'i metrikate kogumiseks
extraScrapeConfigsPrometheuse konfis:- job_name: kubecost honor_labels: true scrape_interval: 1m scrape_timeout: 10s metrics_path: /metrics scheme: http dns_sd_configs: - names: - type: 'A' port: 9003
Mida me saame?
TÀieliku paigalduse korral on meil juurdepÀÀs kubecost'i veebipaneelile ja Grafanale koos dashboard'idega.
KokkuvÔttes, mis kuvatakse peamisel ekraanil, nÀitab tegelikult ressursside arvutatud kulu kuu jooksul. See on prognoositav hind, mis kajastab klastrikasutuse maksumust (kuus) antud ressursside tarbimise taseme juures.
See nĂ€itaja on rohkem kulude analĂŒĂŒsimiseks ja nende optimeerimiseks. Ăldised kulud abstraktse juuli kohta kubecost'is ei ole eriti mugav jĂ€lgida: selleks peate minema billimise. Siiski saab vaadata kulusid eraldi nimede, siltide, pod'ide lĂ”ikes 1/2/7/30/90 pĂ€eva jooksul, mida billimine kunagi ei nĂ€ita.

RÀÀkides siltidest. Tasub koheselt seadistada sildid, mida kasutatakse lisa kategooriatena kulude rĂŒhmitamiseks:

Siltide kĂŒlge vĂ”ib riputada mingeid â see on mugav, kui teil on juba olemas oma mĂ€rgistussĂŒsteem.
Samuti saab seal muuta API lĂ”pp-punkti aadressi, millega cost-model ĂŒhendub, seadistada GCP allahindluse suuruse ning mÀÀrata oma hinnad ressurssidele ja nende mÔÔtmisvaluutale (tĂ”enĂ€oliselt ei mĂ”juta see Total costâi).
Kubecost suudab nĂ€idata erinevaid probleeme klastris (ja isegi teavitada, kui oht on olemas). Kahjuks ei ole valikut seadistada, seega â kui teil on arenduskeskkonnad ja neid kasutatakse, siis saate pidevalt jĂ€lgida midagi sarnast:

Oluline tööriist â Cluster Savings. See mÔÔdab podide aktiivsust (ressursside tarbimine, sealhulgas ka vĂ”rgu) ning arvutab, kui palju raha ja mille pealt on vĂ”imalik sÀÀsta.
VĂ”ib tunduda, et optimeerimisnĂ”uanded on ĂŒsna ilmne, kuid kogemus nĂ€itab, et siiski on veel, millele tĂ€helepanu pöörata. EelkĂ”ige jĂ€lgitakse podide vĂ”rgutegevust (Kubecost soovitab pöörata tĂ€helepanu mitteaktiivsetele), vĂ”rreldakse nĂ”utud ja tegelikku mĂ€lu ja CPU kasutamist, samuti klastris nodeâd kasutatavat CPUâd (soovitavad mitmeid nodeâd ĂŒhte kokku liita), kettade koormust ja veel paari tosinat parameetrit.
Nagu igas kĂŒsimuses, mis puudutab optimeerimist, tuleb ka Kubecosti andmete pĂ”hjal ressursside optimeerimisele lĂ€heneda ettevaatlikult. NĂ€iteks Cluster Savings pakub nodeâde eemaldamist, vĂ€ites, et see on ohutu, kuid ei arvestata sellega, et ein tĂ€ielikult puudub node-selectorâide ja taintâidega, mida mujal nodeâdel ei ole. Ja ĂŒldse, isegi toote autorid oma (muide, vĂ”ib see olla ĂŒsna kasulik neile, kes projekti teemast huvituvad) soovitavad mitte viskuda pea ees kulude optimeerimisele, vaid lĂ€heneda kĂŒsimusele arvestatult.
Summary
PĂ€rast kubecosti kasutamist kuu jooksul paaris projektis vĂ”ime jĂ€reldada, et see on huvitav (ja veel lihtne Ă”ppida ja paigaldada) tööriist pilveteenuste kulude analĂŒĂŒsimiseks ja optimeerimiseks, mida kasutatakse Kubernetes-klastrite jaoks. Arvutused on ĂŒsna tĂ€psed: meie katsetes olid need kooskĂ”las sellega, mida teenusepakkujad tegelikult nĂ”udsid.
Puuduvad ka negatiivsed kĂŒljed: esinevad mĂ”ningad mitte kriitilised vead, funktsionaalsete vĂ”imaluste osas ei kata need mĂ”ne projekti spetsiifilisi vajadusi. Siiski, kui on vaja kiiresti aru saada, kuhu raha lĂ€heb ja mida saab "lĂ”igata", et stabiilselt vĂ€hendada pilveteenuste arvet 5-30% (nii meie puhul juhtuski), on see suurepĂ€rane variant.
P.S.
Lugege ka meie blogist:
- «»;
- «»;
- «».
Allikas: habr.com
