
Ăha rohkem ettevĂ”tteid viib oma infrastruktuuri fĂŒĂŒsilistelt serveritelt ja enda virtuaalmasinatelt pilve. Selline otsus on kergesti mĂ”istetav: pole vaja muretseda riistvara pĂ€rast, kluster on lihtsalt seadistatav mitmesugustes viisides⊠ja mis kĂ”ige tĂ€htsam, olemasolevad tehnoloogiad (nt Kubernetes) vĂ”imaldavad lihtsalt skaleerida arvutusvĂ”imsust vastavalt koormusele.
Finantsaspekt on alati oluline. Tööriist, millest selles artiklis juttu tuleb, on loodud selleks, et aidata vÀhendada eelarveid Kubernetes'i pilvinfrastruktuuri kasutamisel.
Sissejuhatus
â California start-up, mille asutajad on endised Google'i töötajad, arendades lahendust, mis arvutab pilveteenuste (Kubernetes'i klastris ja ĂŒhistes ressurssides) infrastruktuurikulusid, tuvastab klastris seadistustega seotud kitsaskohti ja saadab vastavad teavitused Slacki.
Meil on kliente Kubernetes'ega nii traditsioonilistes pilvkeskkondades nagu AWS ja GCP kui ka Linuxi kogukonnas haruldasemal Azure'il â kokku kĂ”igil platvormidel, mida Kubecost toetab. MĂ”nede jaoks hindame neid kulusid vahe-klooniteenustes iseseisvalt (kasutades meetodit, mis sarnaneb Kubecostiga), jĂ€lgime infrastruktuuri kulutusi ja pĂŒĂŒdleme nende optimeerimise poole. SeetĂ”ttu on loogiline, et meid huvitas vĂ”imalus neid ĂŒlesandeid automatiseerida.
Kubecost'i pĂ”hikomponendi lĂ€htekood on avatud Open Source litsentsi (Apache License 2.0) alusel. Seda saab vabalt kasutada ning saadaval olevate funktsioonide peaks olema piisavalt vĂ€ikeste projektide jaoks. Kuid Ă€rige on Ă€ri: toote ĂŒlejÀÀnud osa on suletud, selle kasutamiseks on vajalik , mis hĂ”lmab ka Ă€rilist tuge. Lisaks pakuvad autorid tasuta litsentsi vĂ€ikestele klastritele (1 klaster, kus on maksimaalselt 10 sĂ”lme â artikli kirjutamise ajal on see piir tĂ”usnud 20 sĂ”lmeni) vĂ”i katseaega tĂ€ielike vĂ”imalustega 1 kuu jooksul.
Kuidas kÔik töötab
Nii et Kubecost'i peamine osa on rakendus , kirjutatud Go keeles. Kogu sĂŒsteemi hĂ”lmav Helm-chart on nimetatud ja tegelikult on see kokku pandud cost-modelâist koos Prometheuse, Grafana ja mitme armatuurlauaga.
Ăldiselt on cost-modelâil oma veebiinterfatsioon, mis kuvab diagramme ja ĂŒksikasjalikku statistikat kulude kohta tabelivormingus ning muidugi ka soovitusi kulude optimeerimiseks. Grafanas esitatud armatuurlauad on arendamise varasem etapp Kubecostâist ja sisaldavad suures osas samu andmeid, mis cost-model, tĂ€iendades neid tuttava statistika abil CPU/mĂ€lu/vĂ”rgu/diskiruumi kasutamise kohta klastris ja selle komponentides.
Kuidas Kubecost töötab?
- Cost-model saadab API kaudu pilveteenuse pakkujatelt teenuse hinnad.
- SeejÀrel, sÔltuvalt sÔlmest ja piirkonnast, arvutatakse sÔlmede kulu.
- SĂ”lmede töö kulude pĂ”hjal saab iga lĂ”pp-pod tunni kulu protsessori kasutamise, gigabaidi mĂ€lu kulutamise ja gigabaidi andmete hoidmise tunni kulu â sĂ”ltuvalt sĂ”lmest, millel see töötas, vĂ”i salvestusklassist.
- Pod'ide töö maksumuse pÔhjal arvestatakse tasu nimede, teenuste, Deployment'ite ja StatefulSet'ide jÀrgi.
- Statistika arvutamiseks kasutatakse kube-state-metrics'i ja node-exporter'i pakutavaid mÔÔdikuid.
Oluline on arvestada, et Kubecost arvestab ainult Kuberneteses saadaval olevaid ressursse. VÀlised andmebaasid, GitLabi serverid, S3 salvestusruumid ja muud teenused, mis puuduvad klastris (kuigi need asuvad samas pilves), ei ole sellele nÀhtavad. Kuid GCP ja AWS puhul saab oma teenusekonto vÔtmed lisada, et kÔik kokku lugeda.
Installeerimine
Kubecosti toimimiseks on vajalik:
- Kubernetes versioon 1.8 vÔi uuem;
- kube-state-metrics;
- Prometheus;
- node-exporter.
Meie klastrites olid kĂ”ik need tingimused juba varem tĂ€idetud, seega oli piisav vaid mÀÀrata Ă”ige lĂ”pp-punkt Prometheusele ligipÀÀsuks. Siiski sisaldab ametlik Helm-chart kubecost kĂ”ike vajalikku, et kĂ€ivituda ka âpaljaâ klastriga.
Kubecosti saab installida mitmel erineval viisil:
- Tavaline installimisviis, mis on kirjeldatud arendaja veebisaidil. On vajalik lisada Helm'i repositoorium cost-analyzer, pÀrast mida saab chart'it installida.. JÀÀb ainult port edasi suunata ja hÀÀlestada seaded kÀsitsi (kasutades kubectl) ja/vÔi veebiliidese cost-model kaudu.
Seda meetodit me isegi ei proovinud, kuna me ei kasuta kolmandate osapoolte valmis konfiguratsioone, kuid see nĂ€eb vĂ€lja kui hea valik, et "lihtsalt proovida enda jaoks". Kui teil on juba osa sĂŒsteemi komponente installitud vĂ”i soovite peenemat seadistust, on parem kaaluda teist teed.
- PÔhimÔtteliselt kasutada , kuid konfigureerida ja installida see ise mugaval viisil.
Nagu juba mainitud, sisaldab see chart lisaks kubecost'ile ka Grafana ja Prometheuse chart'e, mida saab samuti vastavalt soovile seadistada.
Chartis olemas
values.yamlcost-analyzer jaoks vÔimaldab seadistada:- cost-analyzer'i komponente, mida on vaja juurutada;
- oma Prometheuse lÔpp-punkt (kui see teil juba olemas on);
- domeenid ja muud ingress'i seaded cost-model'ile ja Grafanale;
- pod'ide annotatsioonid;
- vajadus pĂŒsivate ladude kasutamiseks ja nende suurus.
TĂ€ielik saadaval olevate konfiguratsiooni valikute nimekiri koos kirjeldusega on .
Kuna kubecost pÔhiversioon ei oska piiritleda juurdepÀÀsu, tuleb kohe seadistada basic-auth veebipaneelile.
- Installi ainult sĂŒsteemi tuum â cost-model. Selle jaoks peab klastris olema installitud Prometheus ning vastav aadress tuleb mÀÀrata muutuja
prometheusEndpointHelmâi jaoks. PĂ€rast seda tuleb rakendada klastris.Samuti tuleb kĂ€sitsi lisada Ingress koos basic-auth. Ja lĂ”puks tuleb lisada sektsioon cost-modeli meetmete 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 paigaldamise korral on meil veebipaneel kubecost ja Grafana koos dashboardâide komplektiga.
KokkuvÔttes, mis kuvatakse avalehel, nÀitab tegelikult ressursside kalkuleeritud maksumust kuus. See on prognoositav hind, mis nÀitab klastrikasutuse maksumust (kuus) praeguste ressursside tarbimise tasemete juures.
See mÔÔdik on rohkem mĂ”eldud kulude analĂŒĂŒsimiseks ja nende optimeerimiseks. Ăldised kulud abstraktsel juul kubecostis ei ole eriti mugav jĂ€lgida: selleks on vaja minna arvelduse juurde. Kuid on vĂ”imalik vaadata kulusid, jagatuna nimede, silte, podide jĂ€rgi 1/2/7/30/90 pĂ€eva jooksul, mida arveldus kunagi ei nĂ€ita.

RÀÀkides siltidest. Tuleb kohe minna seadistustesse ja mÀÀrata siltide nimed, mida kasutada kui lisakategooriaid kulude rĂŒhmitamiseks:

Neid silte saab lisada mistahes â mugav, kui teil on juba olemas oma mĂ€rgistussĂŒsteem.
Samuti saab seal muuta API endpointi aadressi, millega cost-model ĂŒhendub, seadistada GCP allahindluse suuruse ja mÀÀrata oma hinnad ressurssidele ja nende mÔÔtmise valuutale (sellel funktsioonil ei ole mingit mĂ”ju kogukulule).
Kubecost suudab nĂ€idata erinevaid probleeme klastris (ja isegi hĂ€irida, kui oht tekib). Kahjuks ei saa seda valikut seadistada, seetĂ”ttu â kui teil on arendajate keskkonnad ja neid kasutatakse, saate pidevalt jĂ€lgida midagi sellist:

Oluline tööriist â Cluster Savings. See mÔÔdab pod'ide aktiivsust (ressursikasutust, sealhulgas vĂ”rgu kasutust) ning arvutab, kui palju raha ja mille pealt kokku hoida saab.
VĂ”ib tunduda, et optimeerimise nĂ€punĂ€ited on ĂŒsna ilmseid, kuid kogemus nĂ€itab, et ikka on, millele tĂ€helepanu pöörata. EelkĂ”ige jĂ€lgitakse pod'ide vĂ”rgutegevust (Kubecost soovitab pöörata tĂ€helepanu mitteaktiivsetele), vĂ”rreldakse nĂ”utud ja tegelikku mĂ€lukasutust ja CPU-d, samuti klastrite sĂ”lmede kasutatud CPU-d (soovitades mitut sĂ”lme ĂŒheks kokku liita), kettakoormust ja veel paari tosinat parameetrit.
Nagu igas kĂŒsimuses, mis puudutab optimeerimist, tuleb ka Kubecosti andmetel pĂ”hinevat ressursside optimeerimist haalida ettevaatlikult. NĂ€iteks Cluster Savings soovitab sĂ”lmede eemaldamist, vĂ€ites, et see on ohutu, kuid ei arvestata, et nendele juurutatud pod'idel on node-selector'id ja taint'id, mida teistel sĂ”lmedel ei ole. Ja tegelikult, isegi toote autorid oma (ĂŒldiselt vĂ”ib see osutuda vĂ€ga kasulikuks neile, kes on projekti teemast huvitatud) soovitatakse mitte kiirustada kulude optimeerimisega, vaid lĂ€heneda kĂŒsimusele lĂ€bimĂ”eldult.
KokkuvÔte
PĂ€rast kubecost kasutamist kuu jooksul paaril projektil saame jĂ€reldada, et see on huvitav (ja ka kergesti omandatav ja installitav) tööriist pilveteenuste kulude analĂŒĂŒsimiseks ja optimeerimiseks, mida kasutatakse Kubernetes'ega klastrites. Arvutused osutuvad vĂ€ga tĂ€pseteks: meie katsetes kattusid need sellega, mida tegelikult nĂ”udsid teenusepakkujad.
Ei olnud ka ilma miinuseta: mĂ”ned mitte kriitilised vead, funktsionaalsete vĂ”imaluste katvus ei taha mĂ”nes osas katta teatud projektide spetsiifilisi vajadusi. Siiski, kui on vaja kiiresti mĂ”ista, kuhu raha lĂ€heb ja mida saab "lĂ”ikuda", et stabiilselt vĂ€hendada pilveteenuste arvet 5-30% (nagu juhtus meie puhul), â on see suurepĂ€rane valik.
P.S.
Lugege ka meie blogist:
- «»;
- «»;
- «».
Allikas: habr.com
