Rishikimi i Kubecost për kursimin e kostove në Kubernetes në cloud

Rishikimi i Kubecost për kursimin e kostove në Kubernetes në cloud

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

Kubecost — 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 abonetĂ« pĂ«rkatĂ«se, 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 cost-model, e shkruar në Go. Helm-charti që përshkruan tërë sistemin, quhet cost-analyzer 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:

  1. Mёnyra standarde e instalimit, e pĂ«rshkruar nĂ« udhĂ«zimet 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ë.

  2. Përdorimi i fundit të njëjtit chart, 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.yaml pë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ë dokumentacionin.

    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.

  3. 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 prometheusEndpoint për Helm. Pas kësaj, duhet të aplikoni grupin e konfigurimeve YAML 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ë extraScrapeConfigs në 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ë.

Rishikimi i Kubecost për kursimin e kostove në Kubernetes në cloud

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:

Rishikimi i Kubecost për kursimin e kostove në Kubernetes në cloud

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Ă«:

Rishikimi i Kubecost për kursimin e kostove në Kubernetes në cloud

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ë një artikull të fundit (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

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster