
Aktualisht, gjithnjĂ« e mĂ« shumĂ« kompani po transferojnĂ« infrastrukturĂ«n e tyre nga serverĂ«t fizikĂ« dhe virtualĂ«t e pronarit nĂ« cloud. Ky zgjidhje Ă«shtĂ« e lehtĂ« pĂ«r t'u shpjeguar: nuk ka nevojĂ« tĂ« shqetĂ«soheni pĂ«r harduerin, klasteri konfigurrohet lehtĂ«sisht nĂ« shumĂ« mĂ«nyra⊠dhe mĂ« e rĂ«ndĂ«sishmja â teknologjitĂ« ekzistuese (si Kubernetes) lejojnĂ« thjesht tĂ« shkallĂ«zoni fuqitĂ« llogaritĂ«se sipas ngarkesĂ«s.
Aspekti financiar gjithmonë ka rëndësi. Instrumenti që do të diskutohet në këtë artikull ka për qëllim të ndihmojë në reduktimin e buxheteve kur përdoret infrastruktura cloud me Kubernetes.
Hyrje
â njĂ« startup nĂ« Kaliforni nga ish-punonjĂ«s tĂ« Google, qĂ« krijon njĂ« zgjidhje pĂ«r llogaritjen e shpenzimeve pĂ«r infrastrukturĂ«n nĂ« shĂ«rbimet cloud (brenda klasterit Kubernetes + burimet e pĂ«rbashkĂ«ta), duke identifikuar ngushticat nĂ« konfigurimet e klasterit dhe duke dĂ«rguar njoftime pĂ«rkatĂ«se nĂ« Slack.
Kemi klientĂ« me Kubernetes nĂ« platformat e njohura tĂ« serverĂ«ve tĂ« rinj si AWS dhe GCP, si dhe nĂ« mĂ« tĂ« rarĂ«n pĂ«r komunitetin Linux, Azure â nĂ« pĂ«rgjithĂ«si, nĂ« tĂ« gjitha platformat qĂ« pĂ«rkrahen nga Kubecost. PĂ«r disa prej tyre, ne llogarisim kostot pĂ«r shĂ«rbimet brenda klasterĂ«ve vetĂ« (me njĂ« metodologji tĂ« ngjashme me atĂ« tĂ« Kubecost), si dhe ndjekim shpenzimet pĂ«r infrastrukturĂ«n dhe pĂ«rpiqemi t'i optimizojmĂ« ato. Prandaj, Ă«shtĂ« e arsyeshme qĂ« na interesonte mundĂ«sia pĂ«r tĂ« automatizuar kĂ«to detyra.
Kodi burimor i modulit kryesor tĂ« Kubecost Ă«shtĂ« i hapur sipas kushteve tĂ« licencĂ«s Open Source (Apache License 2.0). Ai mund tĂ« pĂ«rdoret lirshĂ«m, dhe funksionalitetet e disponueshme duhet tĂ« jenĂ« tĂ« mjaftueshme pĂ«r projekte tĂ« vogla. MegjithatĂ«, biznesi Ă«shtĂ« biznes: pjesa tjetĂ«r e produktit Ă«shtĂ« e mbyllur, dhe mund tĂ« shfrytĂ«zohet me , tĂ« cilat gjithashtu pĂ«rfshijnĂ« mbĂ«shtetje komerciale. PĂ«r mĂ« tepĂ«r, autorĂ«t ofrojnĂ« njĂ« licencĂ« falas pĂ«r klasterĂ«t e vegjĂ«l (1 klaster me 10 node â gjatĂ« kohĂ«s qĂ« po shkruhej ky artikull, ky kufizim u zgjeroa nĂ« 20 node) ose njĂ« periudhĂ« provuese me mundĂ«si tĂ« plota pĂ«r 1 muaj.
Si funksionon gjithçka
Pra, pjesa kryesore e Kubecost është një aplikacion , shkruar në Go. Helm chart-i, që përshkruan tërë sistemin, quhet dhe në thelb është një paketë nga cost-model me Prometheus, Grafana dhe disa dashboard-e.
Në fakt, cost-model ka një ndërfaqe web, e cila tregon grafikët dhe statistikën e detajuar mbi shpenzimet në formën e tabelës, si dhe, sigurisht, këshilla për optimizimin e kostove. Dashboard-et e paraqitura në Grafana janë një fazë më e hershme e zhvillimit të Kubecost dhe përmbajnë në masë të madhe të njëjtat të dhëna si cost-model, duke i plotësuar ato me statistikat e zakonshme mbi shpenzimin e CPU/memories/rethit/hapësirës në disk në klaster dhe përbërësit e tij.
Si funksionon Kubecost?
- Cost-model përdor API të ofruesve të cloud-it për të marrë çmimet e shërbimit.
- Pastaj, në përputhje me tipin e harduerit të nodit dhe rajonin, llogaritet kostoja për nodet.
- NĂ« bazĂ« tĂ« kostos sĂ« funksionimit tĂ« nodĂ«ve, çdo pod fundor merr njĂ« kosto pĂ«r orĂ« pĂ«rdorimi tĂ« CPU, konsumimin e njĂ« gigabaiti tĂ« memories dhe kostos sĂ« orĂ«s pĂ«r ruajtjen e njĂ« gigabaiti tĂ« dhĂ«nash â nĂ« varĂ«si tĂ« nodit nĂ« tĂ« cilin ai ka punuar ose klasĂ«s sĂ« ruajtjes.
- Duke u bazuar në kostot e punës së pod-ve të veçanta, konsiderohet pagesa sipas hapësirave të emrit, shërbimeve, Deployment-ve dhe StatefulSet-ve.
- Për llogaritjen e statistikave përdoren metrikat e ofruara nga kube-state-metrics dhe node-exporter.
ĂshtĂ« e rĂ«ndĂ«sishme tĂ« merret parasysh qĂ« Kubecost nĂ« mĂ«nyrĂ« tĂ« paracaktuar llogarit vetĂ«m burimet qĂ« janĂ« tĂ« disponueshme nĂ« Kubernetes. Databazat e jashtme, serverĂ«t e GitLab, depozitat S3 dhe shĂ«rbime tĂ« tjera, tĂ« cilat nuk ndodhen nĂ« klaster (pavarĂ«sisht se ndodhen nĂ« tĂ« njĂ«jtin cloud), nuk i shohin. MegjithatĂ«, pĂ«r GCP dhe AWS mund tĂ« shtohen çelĂ«sat e llogarive tĂ« shĂ«rbimit dhe tĂ« llogariten gjithçka sĂ« bashku.
Instalimi
Për funksionimin e Kubecost kërkohen:
- Kubernetes version 1.8 dhe më lart;
- kube-state-metrics;
- Prometheus;
- node-exporter.
Ka ndodhur që në klasterët tanë të gjitha këto kushte janë përmbushur më parë, prandaj ishte e mjaftueshme vetëm të përcaktohej endpoint-i i saktë për aksesin në Prometheus. Megjithatë, chart-i zyrtar Helm i kubecost përmban gjithçka të nevojshme për të nisur dhe në një klaster "të zbrazët".
Kubecost mund të installohet në disa mënyra:
- Mënyra standarde e instalimit, e përshkruar në në faqen e zhvilluesit. Duhet të shtoni në Helm repositorin cost-analyzer, pas të cilit instalohet chart-i.. Duhet vetëm të kaloni portin dhe të përshtatni cilësimet duke dore në gjendjen e dëshiruar manualisht (përmes kubectl) dhe/apo me ndihmën e ndërfaqes në internet cost-model.
Ky metodë nuk e kemi provuar akoma, pasi nuk përdorim konfigurime të gatshme nga jashtë, megjithatë duket si një opsion i shkëlqyer për "ta provoni për vete". Nëse keni tashmë të instaluar disa komponentë të sistemit ose dëshironi një konfigurim më të hollësishëm, është më mirë të shqyrtoni rrugën e dytë.
- Të përdorim në thelb , por ta konfigurojmë dhe ta instalojmë vetë në çdo mënyrë të përshtatshme.
Siç u përmend më parë, përveç vetë kubecost-it, ky chart përmban chartet e Grafana dhe Prometheus, të cilat gjithashtu mund të konfigurohen sipas dëshirës tuaj.
NĂ« chartin
values.yamlpër cost-analyzer lejon të konfiguroni:- listën e komponentëve të cost-analyzer që duhen vendosur;
- endpoint-in tuaj për Prometheus (nëse e keni tashmë);
- domainet dhe cilësimet e tjera të ingress-ëve për cost-model dhe Grafana;
- annotimet për pod-et;
- nevojën për përdorimin e magazinave të qëndrueshme dhe madhësinë e tyre.
Lista e plotë e opsioneve të disponueshme për konfigurim me përshkrime është në .
Duke kubecost në variantin bazë nuk di të kufizojë qasje, do të nevojitet të konfiguroni menjëherë basic-auth për panelin web.
- Instalo vetĂ«m bĂ«rthamĂ«n e sistemit â cost-model. PĂ«r kĂ«tĂ«, duhet tĂ« keni Prometheus tĂ« instaluar nĂ« klaster dhe tĂ« specifikoni adresĂ«n e tij pĂ«rkatĂ«se nĂ« variablĂ«n
prometheusEndpointpĂ«r Helm. Pas kĂ«saj â aplikoni nĂ« klaster.SĂ«rish, do tĂ« duhet tĂ« shtoni manualisht Ingress me basic-auth. Dhe pĂ«rfundimisht, do tĂ« duhet tĂ« shtoni njĂ« seksion pĂ«r grumbullimin e metrikave cost-model nĂ«
extraScrapeConfigsnë konfigurimin e Prometheus:- 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
ĂfarĂ« marrim?
Me një instalim të plotë, ne kemi në dispozicion panelin web kubecost dhe Grafana me një grup dashboard-esh.
Kosto totale, e shfaqur në ekranin kryesor, të vërtetë tregon kostot e llogaritura të burimeve për muajin. Kjo është e parashikuar çmimi, që tregon koston e përdorimit të klasterit (në muaj) në nivelin aktual të konsumit të burimeve.
Kjo metrikĂ« Ă«shtĂ« mĂ« shumĂ« pĂ«r analizimin e shpenzimeve dhe optimizimin e tyre. Shpenzimet totale pĂ«r njĂ« korrik abstrakt nĂ« kubecost nuk janĂ« shumĂ« tĂ« lehta pĂ«r t'u parĂ«: pĂ«r kĂ«tĂ« do tĂ« duhet tĂ« shikoni nĂ« faturimin. MegjithatĂ«, mund tĂ« shikoni shpenzimet e ndara sipas emrave tĂ« hapĂ«sirave, etiketave, podâave pĂ«r 1/2/7/30/90 ditĂ«, gjĂ« qĂ« faturimi nuk do t'ju tregojĂ« kurrĂ«.

Dhe pak pĂ«r etiketat. ĂshtĂ« mirĂ« qĂ« tĂ« shkoni menjĂ«herĂ« nĂ« cilĂ«simet dhe tĂ« vendosni emrat e etiketa, tĂ« cilat do tĂ« pĂ«rdoren si kategori shtesĂ« pĂ«r grupimin e shpenzimeve:

Mund tĂ« vendosni çdo etikete mbi to â e pĂ«rshtatshme, nĂ«se keni njĂ« sistem tĂ« vetin tĂ« etiketimit.
Gjithashtu atje mund të ndryshoni adresën e endpoint-it të API, me të cilin lidhet modeli i kostos, të rregulloni madhësinë e zbritjes në GCP dhe të vendosni çmim të personalizuar për burimet dhe valutën për matjen e tyre (kjo funksion nuk ndikon ndonjëherë në kostot totale).
Kubecost di tĂ« tregojĂ« problemet nĂ« klaster (edhe tĂ« paralajmĂ«rojĂ« nĂ« rast rreziku). FatkeqĂ«sisht, opsioni nuk Ă«shtĂ« i konfiguruar, prandaj â nĂ«se keni mjedise pĂ«r zhvilluesit dhe ato pĂ«rdoren, do tĂ« mund tĂ« observoni vazhdimisht diçka tĂ« tillĂ«:

NjĂ« instrument i rĂ«ndĂ«sishĂ«m â Kursimet e Klasterit. Ai mat pĂ«r aktiviteten e pod'ave (konsumet e burimeve, pĂ«rfshirĂ« edhe ato rrjetore), si dhe llogarit se sa para dhe nĂ« çfarĂ« mĂ«nyre mund tĂ« kursehet.
Mund të duket se këshillat për optimizim janë mjaft të qarta, megjithatë, përvoja tregon se gjithsesi ka gjëra për t'u shqyrtuar. Veçanërisht, ndjek aktivitetin rrjetor të pod'ave (Kubecost sugjeron të kushtohet vëmendje atyre që janë joaktivë), krahasohet kërkesa dhe konsumi real i memories dhe CPU-së, si dhe CPU-ja që përdoren nga nodet e klasterit (propozohet të shkrumbohen disa node në një), ngarkesa e disqeve dhe disa parametra të tjerë.
Ashtu si në çdo rast që ka të bëjë me optimizimin, optimizimi i burimeve mbi të dhënat e Kubecost duhet të shihet me kujdes. Për shembull, Cluster Savings propozon të fshihen nodet, duke pretendur se është e sigurt, megjithatë nuk merr parasysh praninë e node-selector'ave dhe taint'ave të vendosur mbi to, të cilat nuk janë të pranishme në nodet e tjera. Madje, edhe autorët e produktit në artikullin e tyre të (për rastin, kjo mund të jetë shumë e dobishme për ata që janë të interesuar për temën e projektit) rekomandohet që të mos hidhen menjëherë në optimizimin e shpenzimeve, por të afrohen me mend dhe me kujdes.
Përfundimet
Pas një muaji përdorimi të kubecost në disa projekte, mund të përfundojmë se ky është një mjet interesant (dhe i lehtë për t'u zotëruar dhe instaluar) për analizimin dhe optimizimin e shpenzimeve për shërbimet e ofruesve të cloud, të cilat përdoren për klasterat Kubernetes. Llogaritë delikan si shumë të sakta: në eksperimentet tona, ato përputheshin me atë që realisht kërkonin ofruesit.
Nuk munguan edhe disavantazhet: ka disa bugs qĂ« nuk janĂ« kritikĂ«, dhe funksionalitetet nĂ« disa raste nuk mbulojnĂ« nevojat specifike tĂ« disa projekteve. MegjithatĂ«, nĂ«se duhet tĂ« kuptoni shpejt se ku shkojnĂ« paratĂ« dhe çfarĂ« mund tĂ« "prishni" pĂ«r tĂ« ulur qĂ«ndrimin pĂ«r shĂ«rbimet e cloud nga 5-30% (ashtu si ndodhi nĂ« rastin tonĂ«), â ky Ă«shtĂ« njĂ« opsion i shkĂ«lqyer.
P.S.
Lexoni gjithashtu në blogun tonë:
- «»;
- «»;
- «».
Burimi: habr.com
