Pregled Kubecost za prihranek denarja pri Kubernetes v oblakih

Pregled Kubecost za prihranek denarja pri Kubernetes v oblakih

Trenutno vse več podjetij prenaša svojo infrastrukturo s strežnikov strojne opreme in lastnih virtualnih strojev v oblak. To rešitev je enostavno razložiti: ni vam treba skrbeti za strojno opremo, gruča je enostavno konfigurirana na veliko različnih načinov ... in kar je najpomembnejše, obstoječe tehnologije (kot je Kubernetes) omogočajo enostavno prilagajanje računalniške moči glede na obremenitev .

Finančni vidik je vedno pomemben. Orodje, obravnavano v tem članku, je zasnovano tako, da pomaga zmanjšati proračune pri uporabi infrastrukture v oblaku s Kubernetesom.

Predstavitev

Kubecost je kalifornijski startup iz Googla, ustvarja rešitev za izračun infrastrukturnih stroškov v storitvah v oblaku (znotraj gruče Kubernetes + skupni viri), iskanje ozkih grl v nastavitvah gruče in pošiljanje ustreznih obvestil v Slacku.

Imamo odjemalce s Kubernetesom tako v znanih oblakih AWS in GCP kot v Azure, kar je bolj redko za skupnost Linux - na splošno na vseh platformah, ki jih podpira Kubecost. Za nekatere med njimi sami izračunamo stroške znotrajgrozdnih storitev (po metodi, podobni tisti, ki jo uporablja Kubecost), poleg tega pa spremljamo stroške infrastrukture in jih poskušamo optimizirati. Zato je logično, da nas je zanimala možnost avtomatizacije tovrstnih opravil.

Izvorna koda glavnega modula Kubecost je odprta pod pogoji odprtokodne licence (Apache License 2.0). Uporablja se lahko prosto in razpoložljive funkcije bi morale zadostovati za majhne projekte. Vendar posel je posel: preostali del izdelka je zaprt, lahko ga uporablja plačane naročnine, kar pomeni tudi komercialno podporo. Poleg tega avtorji ponujajo brezplačno licenco za majhne gruče (1 gruča z 10 vozlišči – med pisanjem tega članka se je ta omejitev razširila na 20 vozlišč) ali poskusno obdobje s polnimi zmogljivostmi za 1 mesec.

Kako vse deluje

Torej, glavni del Kubecosta je aplikacija stroškovni model, zapisano v Go. Imenuje se Helmov grafikon, ki opisuje celoten sistem analizator stroškov in v svojem jedru je sestav iz stroškovnega modela s Prometejem, Grafanom in več armaturnimi ploščami.

Na splošno ima stroškovni model svoj spletni vmesnik, ki prikazuje grafe in podrobno statistiko stroškov v obliki tabele ter seveda nasvete za optimizacijo stroškov. Nadzorne plošče, predstavljene v Grafani, so zgodnejša faza razvoja Kubecosta in vsebujejo večinoma enake podatke kot stroškovni model, ki jih dopolnjujejo z običajnimi statističnimi podatki o porabi prostora CPE/pomnilnika/omrežja/diska v gruči in njegovem komponente.

Kako deluje Kubecost?

  • Cost-model prejema cene storitev prek API-ja ponudnikov v oblaku.
  • Nadalje se glede na vrsto železa vozlišča in regijo izračuna strošek na vozlišče.
  • Na podlagi stroškov izvajanja vozlišč vsak listni pod dobi ceno na uro uporabe CPE-ja, na gigabajt porabljenega pomnilnika in na uro na gigabajt shranjenih podatkov – odvisno od vozlišča, na katerem se izvaja, ali razreda shranjevanja.
  • Na podlagi stroškov delovanja posameznih podov se plačilo izračuna za imenske prostore, storitve, razmestitve, StatefulSets.
  • Statistika se izračuna z uporabo meritev, ki jih zagotavljata kube-state-metrics in node-exporter.

Pomembno je upoštevati, da Kubecost privzeto šteje samo vire, ki so na voljo v Kubernetesu. Zunanje baze podatkov, strežniki GitLab, S3 shrambe in druge storitve, ki niso v gruči (tudi če se nahajajo v istem oblaku), mu niso vidne. Čeprav lahko za GCP in AWS dodate ključe svojih servisnih računov in vse skupaj izračunate.

Namestitev

Kubecost zahteva:

  • Kubernetes različica 1.8 in novejša;
  • kube-state-metrics;
  • Prometej;
  • vozlišče-izvoznik.

Tako se je zgodilo, da so bili v naših grozdih vsi ti pogoji vnaprej izpolnjeni, tako da se je izkazalo, da je za dostop do Prometheusa dovolj le določiti pravo končno točko. Vendar pa uradni grafikon kubecost Helm vsebuje vse, kar potrebujete za izvajanje v goli gruči.

Kubecost lahko namestite na več načinov:

  1. Standardni način namestitve, opisan v Navodila na spletnem mestu razvijalca. Obvezno dodajte repozitorij analizatorja stroškov v Helm in nato namestite grafikon. Vse, kar ostane, je, da posredujete svoja vrata in prilagodite nastavitve na želeno stanje ročno (prek kubectl) in/ali s pomočjo spletnega vmesnika stroškovnega modela.

    Te metode nismo niti poskusili, ker ne uporabljamo že pripravljenih konfiguracij tretjih oseb, vendar je videti kot dobra možnost »samo poskusite sami«. Če že imate nameščene nekatere sistemske komponente ali želite več finih nastavitev, je bolje razmisliti o drugi poti.

  2. Uporabite v bistvu isti grafikon, vendar ga konfigurirajte in namestite sami na kateri koli primeren način.

    Kot že omenjeno, ta grafikon poleg samega kubecost-a vsebuje grafikone Grafana in Prometheus, ki ju lahko po želji tudi prilagodimo.

    Na voljo na grafikonu values.yaml za analizator stroškov vam omogoča konfiguracijo:

    • seznam komponent analizatorja stroškov, ki jih je treba namestiti;
    • vaša končna točka za Prometheus (če jo že imate);
    • domene in druge vstopne nastavitve za stroškovni model in Grafana;
    • opombe za stroke;
    • potreba po uporabi trajnega skladišča in njegova velikost.

    Celoten seznam razpoložljivih konfiguracijskih možnosti z opisi je na voljo v dokumentacijo.

    Ker kubecost v svoji osnovni različici ne more omejiti dostopa, boste morali takoj konfigurirati basic-auth za spletno ploščo.

  3. Namestite samo jedro sistema - stroškovni model. Če želite to narediti, morate imeti Prometheus nameščen v gruči in podati ustrezno vrednost njegovega naslova v spremenljivki prometheusEndpoint za Helm. Po tem - uporabite nabor konfiguracij YAML v gruči.

    Spet boste morali ročno dodati Ingress z osnovnim preverjanjem. Nazadnje boste morali dodati razdelek za zbiranje meritev stroškovnega modela extraScrapeConfigs v konfiguraciji Prometheusa:

    - job_name: kubecost
      honor_labels: true
      scrape_interval: 1m
      scrape_timeout: 10s
      metrics_path: /metrics
      scheme: http
      dns_sd_configs:
      - names:
        - <адрес вашего сервиса kubecost>
        type: 'A'
        port: 9003

Kaj dobimo?

Ob popolni namestitvi imamo na voljo spletni panel kubecost in Grafana s kompletom nadzornih plošč.

Skupni stroški, prikazan na glavnem zaslonu, dejansko prikazuje ocenjene stroške virov za mesec. to predvideno cena, ki odraža stroške uporabe gruče (na mesec) pri trenutni ravni porabe virov.

Ta metrika je bolj namenjena analizi stroškov in njihovi optimizaciji. Ni zelo priročno gledati na skupne stroške za abstraktni julij v kubecost: morali boste pojdi na obračun. Ogledate pa si lahko stroške, razčlenjene po imenskih prostorih, oznakah, sklopih za 1/2/7/30/90 dni, ki vam jih obračun ne bo nikoli prikazal.

Pregled Kubecost za prihranek denarja pri Kubernetes v oblakih

Ko smo že pri nalepke. Takoj pojdite v nastavitve in nastavite imena oznak, ki bodo uporabljene kot dodatne kategorije za združevanje stroškov:

Pregled Kubecost za prihranek denarja pri Kubernetes v oblakih

Nanje lahko obesite poljubne nalepke - priročno, če že imate svoj sistem označevanja.

Tam lahko tudi spremenite naslov končne točke API-ja, s katero se poveže stroškovni model, prilagodite velikost popusta v GCP in nastavite lastne cene za vire in valuto za njihovo merjenje (iz neznanega razloga funkcija ne vpliva na skupne stroške).

Kubecost lahko prikazuje različne težave v grozdu (in celo opozorilo v primeru nevarnosti). Na žalost te možnosti ni mogoče konfigurirati, zato boste, če imate okolja za razvijalce in jih uporabljate, nenehno videli nekaj takega:

Pregled Kubecost za prihranek denarja pri Kubernetes v oblakih

Pomembno orodje - Cluster Savings. Meri aktivnost podov (porabo virov, vključno z omrežnimi), izračuna pa tudi, koliko denarja lahko prihranite in pri čem.

Morda se zdi, da so nasveti za optimizacijo povsem očitni, vendar izkušnje kažejo, da je še vedno kaj videti. Zlasti se spremlja omrežna aktivnost podov (Kubecost predlaga, da ste pozorni na neaktivne), primerja se zahtevana in dejanska poraba pomnilnika in procesorja ter CPE, ki ga uporabljajo vozlišča gruče (predlaga strnitev več vozlišč v eno), disk obremenitev in še nekaj ducatov parametrov.

Kot pri vseh težavah z optimizacijo, optimizacija virov na podlagi podatkov Kubecost zahteva: zdraviti previdno. Cluster Savings na primer predlaga brisanje vozlišč, pri čemer trdi, da je to varno, vendar ne upošteva prisotnosti izbirnikov vozlišč in madežev v podih, nameščenih na njih, ki niso na voljo na drugih vozliščih. In nasploh tudi avtorji izdelka v svojih nedavni članek (mimogrede, lahko je zelo koristno za tiste, ki jih zanima tema projekta) je priporočljivo, da ne hitite brezglavo v optimizacijo stroškov, ampak k vprašanju pristopite premišljeno.

Rezultati

Po mesecu uporabe kubecost-a na nekaj projektih lahko zaključimo, da gre za zanimivo (in tudi enostavno za učenje in namestitev) orodje za analizo in optimizacijo stroškov storitev ponudnikov oblakov, ki se uporabljajo za gruče Kubernetes. Izračuni so se izkazali za zelo natančne: v naših poskusih so sovpadali s tem, kar so ponudniki dejansko zahtevali.

Obstaja tudi nekaj slabosti: obstajajo nekritične napake in ponekod funkcionalnost ne pokriva potreb, značilnih za nekatere projekte. Če pa morate hitro razumeti, kam gre denar in kaj je mogoče "odrezati", da bi dosledno zmanjšali račun za storitve v oblaku za 5-30% (to se je zgodilo v našem primeru), je to odlična možnost .

PS

Preberite tudi na našem blogu:

Vir: www.habr.com

Dodaj komentar