
Aktualisht, gjithnjĂ« e mĂ« shumĂ« kompani po transferojnĂ« InfrastrukturĂ«n e tyre nga serverat fizikĂ« dhe virtualĂ«t e tyre nĂ« re. Ky Ă«shtĂ« njĂ« vendim i lehtĂ« pĂ«r t'u shpjeguar: nuk ka nevojĂ« tĂ« kujdeseni pĂ«r pajisjet, klasteri Ă«shtĂ« lehtĂ«sisht i konfiguruar nĂ« shumĂ« mĂ«nyra tĂ« ndryshme... dhe mĂ« e rĂ«ndĂ«sishmja â teknologjitĂ« ekzistuese (si Kubernetes) lejojnĂ« tĂ« shkallĂ«zoni lehtĂ«sisht fuqitĂ« llogaritĂ«se nĂ« varĂ«si tĂ« ngarkesĂ«s.
Aspekti financiar gjithmonë ka rëndësi. Instrumenti, për të cilin do të flasim në këtë artikull, ka për qëllim të ndihmojë në zvogëlimin e buxheteve kur përdorni infrastrukturën në re me Kubernetes.
Hyrje
â njĂ« startup kalifornian nga ish-punonjĂ«s tĂ« Google, qĂ« krijon njĂ« zgjidhje pĂ«r llogaritjen e kostove tĂ« infrastrukturĂ«s nĂ« shĂ«rbimet e cloud (brenda klasterit Kubernetes + burimet e pĂ«rbashkĂ«ta), identifikimin e ngushticave nĂ« konfigurimet e klasterit dhe dĂ«rgimin e njoftimeve pĂ«rkatĂ«se nĂ« Slack.
Kemi klientĂ« me Kubernetes si nĂ« re tĂ« njohura si AWS dhe GCP, ashtu edhe mĂ« tĂ« rralla pĂ«r komunitetin Linux, si Azure â nĂ« pĂ«rgjithĂ«si, nĂ« tĂ« gjitha platformat qĂ« mbĂ«shteten nga Kubecost. PĂ«r disa prej tyre, ne llogarisim kostot e shĂ«rbimeve brenda klasterit vetĂ« (me njĂ« metodĂ« tĂ« ngjashme me atĂ« qĂ« pĂ«rdor Kubecost), si dhe ndjekin shpenzimet pĂ«r infrastrukturĂ«n dhe pĂ«rpiqemi t'i optimizojmĂ«. 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 nĂ«n njĂ« licencĂ« Open Source (Apache License 2.0). Ai mund tĂ« pĂ«rdoret lirĂ«, dhe funksionet e disponueshme duhet tĂ« jenĂ« mjaft tĂ« mjaftueshme pĂ«r projekte tĂ« vogla. MegjithatĂ«, biznesi Ă«shtĂ« biznes: pjesa tjetĂ«r e produktit Ă«shtĂ« e mbyllur dhe mund tĂ« shfrytĂ«zohet pĂ«r , tĂ« cilat gjithashtu pĂ«rfshijnĂ« mbĂ«shtetje komerciale. PĂ«rveç kĂ«saj, autorĂ«t ofrojnĂ« njĂ« licencĂ« falas pĂ«r klasterĂ« tĂ« vegjĂ«l (1 klaster me 10 nodo â nĂ« kohĂ«n e shkrimit tĂ« kĂ«tij artikulli, ky kufi u zgjat deri nĂ« 20 nodo) ose njĂ« periudhĂ« provimi me mundĂ«si tĂ« plota pĂ«r 1 muaj.
Si është ndërtuar gjithçka
Pra, pjesa kryesore e Kubecost është një aplikacion , e shkruar në Go. Helm-charti që përshkruan tërë sistemin, quhet dhe në thelb është një paketë nga cost-model me Prometheus, Grafana dhe disa panele.
Në përgjithësi, modeli i kostos ka një ndërfaqe uebi që tregon grafikët dhe statistikat e detajuara mbi shpenzimet në format tabelar, si dhe, natyrisht, këshilla për optimizimin e kostove. Panelet e paraqitura në Grafana janë një fazë më e hershme e zhvillimit të Kubecost dhe përmbajnë në të shumtën e rasteve të njëjtat të dhëna si modeli i kostos, duke i plotësuar ato me statistikat e zakonshme mbi përdorimin e CPU-së, memories, rrjetit dhe hapësirës disk në cluster dhe komponentët e tij.
Si funksionon Kubecost?
- Modeli i kostos merr çmimet e shërbimeve përmes API-ve të ofruesve të shërbimeve në cloud.
- Pastaj, në përputhje me tipin e harduerit të nodit dhe rajonin, llogaritet kostoja për nodet.
- Në bazë të kostos së punës së nodit, çdo pod përfundimtar merr një kosto për orën e përdorimit të procesorit, për konsumimin e një gigabaiti të memories dhe koston e orës së ruajtjes një gigabaiti të dhënash - në përputhje me nodin në të cilin ka punuar, ose klasën e ruajtjes.
- Duke u bazuar në kostot e punës së pod-eve të veçanta, llogaritet pagesa për hapësirat emërtimi, shërbimet, Deployment-at dhe StatefulSet-at.
- Për llogaritjen e statistikave, përdoren metrika të ofruara nga kube-state-metrics dhe node-exporter.
ĂshtĂ« e rĂ«ndĂ«sishme tĂ« merret parasysh se Kubecost nĂ« mĂ«nyrĂ« default llogarit vetĂ«m burimet e disponueshme nĂ« Kubernetes. Bazat e tĂ« dhĂ«nave tĂ« jashtme, serverat GitLab, depoja S3 dhe shĂ«rbime tĂ« tjera qĂ« mungojnĂ« nĂ« cluster (edhe pse ndodhen nĂ« tĂ« njĂ«jtin cloud), pĂ«r tĂ« nuk janĂ« tĂ« dukshme. MegjithatĂ«, pĂ«r GCP dhe AWS Ă«shtĂ« e mundur tĂ« shtohen çelĂ«sat e llogarive shĂ«rbimi dhe tĂ« llogaritet gjithçka sĂ« bashku.
Instalimi
Për funksionimin e Kubecost nevojiten:
- Kubernetes versioni 1.8 dhe më lart;
- kube-state-metrics;
- Prometheus;
- node-exporter.
Ka ndodhur që në klasterët tanë të gjitha këto kushte ishin plotësuar më parë, prandaj mjaftoi vetëm të specifikohej endpoint-i i duhur për qasje në Prometheus. Megjithatë, chart-i zyrtar Helm i kubecost përmban gjithçka të nevojshme për të filluar edhe në një cluster "të zbrazët".
Instalimi i Kubecost mund të bëhet në disa mënyra:
- MŃnyra standarde e instalimit, e pĂ«rshkruar nĂ« nĂ« faqen e zhvilluesit. ĂshtĂ« e nevojshme tĂ« shtoni nĂ« Helm depot e cost-analyzer, pas sĂ« cilĂ«s tĂ« instaloni chart-in. Do tĂ« mbetet vetĂ«m tĂ« kaloni portin tuaj dhe tĂ« pĂ«rshtatni cilĂ«simet deri nĂ« gjendjen e dĂ«shiruar manualisht (pĂ«rmes kubectl) dhe/ose me ndihmĂ«n e ndĂ«rfaqes sĂ« uebit tĂ« modelit tĂ« kostos.
Ky thisll mjetë s'kemi provuar, pasi që nuk përdorim konfigurime të gatshme të jashtme, megjithatë duket si një mundësi e mirë "thjesht për të provuar për vete". Nëse keni tashmë disa komponente të sistemit të instaluara ose dëshironi një konfigurim më të hollësishëm, më mirë të shqyrtoni rrugën e dytë.
- Përdorimi i fundit , por për ta konfiguruar dhe instaluar vetë në çdo mënyrë të përshtatshme.
Siç u përmend më parë, përveç kubecost, ky chart përmban grafike dhe Prometheus, të cilët gjithashtu mund të konfigurohen sipas dëshirës tuaj.
I disponueshëm në chartin
values.yamlpër cost-analyzer lejon konfigurimin:- listën e komponentëve të cost-analyzer që duhen vendosur;
- endpointin tuaj për Prometheus (nëse e keni tashmë);
- domainet dhe parametrat e tjerë të ingress për cost-model dhe Grafana;
- annotimet pĂ«r podâĂ«t;
- nevojën për përdorimin e magazinave të përhershme dhe madhësinë e tyre.
Lista e plotë e opsioneve të disponueshme të konfigurimit me përshkrim ndodhet në .
Duke qenë se kubecost në versionin bazë nuk mund të kufizojë accesin, do të duhet të konfiguroni menjëherë basic-auth për panelin e internetit.
- Instalo vetëm bërthama e sistemit - cost-model. Për këtë, duhet të keni të instaluar Prometheus në klaster dhe të tregoni vlerën përkatëse të adresës së tij në variablën
prometheusEndpointpër Helm. Pas kësaj, duhet të aplikoni në klaster.Edhe një herë, do të duhet të shtoni manualisht Ingress me basic-auth. Dhe përfundimisht, do të duhet të shtoni një seksion për mbledhjen e metrikave për 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Ă«, nĂ« duar kemi panelin e internetit tĂ« kubecost dhe Grafana me njĂ« grup dashboardâash.
Kosto totale, e cila shfaqet në ekranin kryesor, në fakt tregon koston llogaritur të burimeve për një muaj. Kjo është kostoja e parashikuar që tregon koston e përdorimit të klasterit (në muaj) në nivelin aktual të konsumit të burimeve.
Ky metrik është më shumë për analizimin e shpenzimeve dhe optimizimin e tyre. Shpenzimet totale për një korrik abstrakt në kubecost nuk shikohen shumë lehtë: për këtë do të duhet të shikoni në faturimin. Por mund të shihni shpenzimet me ndarje sipas hapësirave të emrave, etiketave, podëve për 1/2/7/30/90 ditë, gjë që faturimi kurrë nuk do t'ju tregojë.

MeqenĂ«se po flasim pĂ«r etiketat. ĂshtĂ« e pĂ«rshtatshme tĂ« hysh menjĂ«herĂ« nĂ« cilĂ«sime dhe tĂ« vendosĂ«sh emrat e etiketave qĂ« do tĂ« pĂ«rdoren si kategori shtesĂ« pĂ«r grumbullimin e kostove:

Etiketat mund tĂ« vendosen çfarĂ«do â Ă«shtĂ« e dobishme, nĂ«se tashmĂ« ke sistemin tĂ«nd tĂ« etiketimit.
Gjithashtu, aty mund të ndryshosh adresën e API endpoint-it, me të cilin lidhet modeli i kostos, të përcaktosh madhësinë e zbritjes në GCP dhe të vendosësh çmimet e tua për burimet dhe monedhën për matjen e tyre (carakteristika për ndonjë arsye nuk ndikon në koston totale).
Kubecost di tĂ« tregojĂ« probleme tĂ« ndryshme nĂ« klasĂ«r (dhe madje tĂ« tĂ« alarmojĂ« nĂ« rast rrethi). FatkeqĂ«sisht, kjo opsion nuk konfigurtohet, prandaj â nĂ«se ke mjedise pĂ«r zhvilluesit dhe ato pĂ«rdoren, do tĂ« mundesh tĂ« vĂ«zhgosh vazhdimisht diçka tĂ« tillĂ«:

NjĂ« mjet i rĂ«ndĂ«sishĂ«m â Cluster Savings. Ai mat aktivitetin e pod-Ă«ve (konsumimi i burimeve, pĂ«rfshirĂ« edhe ato rrjetore), si dhe llogarit se sa para dhe pĂ«r çfarĂ« mund tĂ« kursehet.
Mund të duket se këshillat për optimizim janë mjaft të dukshme, megjithatë përvoja tregon se ka gjithmonë diçka për të vëzhguar. Në veçanti, monitorohet aktiviteti rrjetor i pod-ëve (Kubecost sugjeron të kushtosh vëmendje atyre që janë joaktive), krahasohet kërkesa dhe konsumimi real i memorie dhe CPU-së, si dhe CPU-ja e përdorur nga nodet e klasës (sugjeron të bashkosh disa node në një), ngarkesa mbi disqet dhe disa parametra të tjerë.
Si në çdo çështje që ka të bëjë me optimizimin, optimizimi i burimeve mbi të dhëna nga Kubecost duhet të trajtohet me kujdes. Për shembull, Cluster Savings sugjeron të fshihen nodet, duke e konsideruar të sigurt, megjithatë nuk merr në konsideratë praninë e pod-ëve të shpalosur mbi to me ndarës node dhe taint që nuk ka në nodet e tjera. Edhe vetë autorët e produktit në (përkatësisht, ai mund të jetë shumë i dobishëm për ata që janë të interesuar në temën e projektit) rekomandojnë të mos hidhesh me kokë në optimizimin e kostove, por të qasesh në këtë çështje me mend.
Përfundime
Pas përdorimit të kubecost për një muaj në disa projekte, mund të konkludohet se ky është një mjet interesant (dhe gjithashtu i lehtë për t'u mësuar dhe instaluar) për analizimin dhe optimizimin e shpenzimeve për shërbimet e ofruesve të cloud që përdoren për klasteret Kubernetes. Llogaritjet rezultuan mjaft të sakta: në eksperimentet tona ato përputheshin me atë që në të vërtetë kërkonin ofruesit.
Nuk munguan as disavantazhet: ka disa bugs jo kritike, funksionaliteti në disa vende nuk mbulon nevojat specifike për disa projekte. Megjithatë, nëse duhet të kuptoni shpejt se ku po shkojnë paratë dhe çfarë mund të "pritet" për të ulur qëndrim për shërbimet cloud nga 5-30% (si dhe ndodhi në rastin tonë), ky është një opsion i shkëlqyer.
P.S.
Lexoni gjithashtu në blogun tonë:
- «»;
- «»;
- «».
Burimi: habr.com
