Kubecosti ĂŒlevaade Kubernetes'i rahasammaste kĂ€rpimiseks pilvedes

Kubecosti ĂŒlevaade Kubernetes'i rahasammaste kĂ€rpimiseks pilvedes

Ü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

Kubecost — 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 tasuline tellimus, 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 cost-model, kirjutatud Go keeles. Kogu sĂŒsteemi hĂ”lmav Helm-chart on nimetatud cost-analyzer 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:

  1. Tavaline installimisviis, mis on kirjeldatud juhendis 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.

  2. PÔhimÔtteliselt kasutada sama charti, 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.yaml cost-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 dokumentatsioonis.

    Kuna kubecost pÔhiversioon ei oska piiritleda juurdepÀÀsu, tuleb kohe seadistada basic-auth veebipaneelile.

  3. Installi ainult sĂŒsteemi tuum — cost-model. Selle jaoks peab klastris olema installitud Prometheus ning vastav aadress tuleb mÀÀrata muutuja prometheusEndpoint Helm’i jaoks. PĂ€rast seda tuleb rakendada YAML-konfiguratsioonide komplekt klastris.

    Samuti tuleb kÀsitsi lisada Ingress koos basic-auth. Ja lÔpuks tuleb lisada sektsioon cost-modeli meetmete kogumiseks extraScrapeConfigs Prometheuse 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.

Kubecosti ĂŒlevaade Kubernetes'i rahasammaste kĂ€rpimiseks pilvedes

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

Kubecosti ĂŒlevaade Kubernetes'i rahasammaste kĂ€rpimiseks pilvedes

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:

Kubecosti ĂŒlevaade Kubernetes'i rahasammaste kĂ€rpimiseks pilvedes

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 hiljutises artiklis (ĂŒ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

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster