Kubecost recenzija za uštedu novca na Kubernetesu u oblacima

Kubecost recenzija za uštedu novca na Kubernetesu u oblacima

Trenutno, sve više kompanija prenosi svoju infrastrukturu sa hardverskih servera i sopstvenih virtuelnih mašina u oblak. Ovo rešenje je lako objasniti: nema potrebe da brinete o hardveru, klaster se lako konfiguriše na mnogo različitih načina... i što je najvažnije, postojeće tehnologije (kao što je Kubernetes) omogućavaju jednostavno skaliranje računarske snage u zavisnosti od opterećenja .

Finansijski aspekt je uvijek važan. Alat o kojem se govori u ovom članku dizajniran je da pomogne u smanjenju budžeta kada koristite infrastrukturu oblaka s Kubernetesom.

Uvod

Kubecost je kalifornijski startup iz Google-a, koji kreira rješenje za izračunavanje troškova infrastrukture u cloud servisima (unutar Kubernetes klastera + dijeljeni resursi), traži uska grla u postavkama klastera i šalje odgovarajuća obavještenja Slacku.

Imamo klijente sa Kubernetes-om i u poznatim AWS i GCP oblacima, i, ređe za Linux zajednicu, Azure - generalno, na svim platformama koje podržava Kubecost. Za neke od njih sami izračunavamo troškove usluga unutar klastera (koristeći metodu sličnu onoj koju koristi Kubecost), a također pratimo troškove infrastrukture i pokušavamo ih optimizirati. Stoga je logično da nas je zanimala mogućnost automatizacije ovakvih zadataka.

Izvorni kod glavnog Kubecost modula je otvoren pod uslovima licence otvorenog koda (Apache License 2.0). Može se slobodno koristiti i dostupne funkcije bi trebale biti dovoljne za male projekte. Međutim, posao je posao: ostatak proizvoda je zatvoren, može se koristiti plaćene pretplate, što podrazumijeva i komercijalnu podršku. Osim toga, autori nude besplatnu licencu za male klastere (1 klaster sa 10 čvorova - tokom pisanja ovog članka ovo ograničenje je prošireno na 20 čvorova) ili probni period sa punim mogućnostima u trajanju od 1 mjeseca.

Kako sve funkcioniše

Dakle, glavni dio Kubecost-a je aplikacija troškovni model, napisano u Go. Poziva se Helmova karta koja opisuje cijeli sistem analizator troškova a u njegovoj srži je sklop od troškovnog modela sa Prometheusom, Grafanom i nekoliko kontrolnih ploča.

Uopšteno govoreći, troškovni model ima svoj web interfejs, koji prikazuje grafikone i detaljnu statistiku troškova u tabelarnom obliku, kao i, naravno, savete za optimizaciju troškova. Kontrolne ploče predstavljene u Grafani su ranija faza u razvoju Kubecost-a i sadrže uglavnom iste podatke kao i troškovni model, dopunjujući ih uobičajenom statistikom o potrošnji CPU/memorije/mrežnog/disk prostora u klasteru i njegovim komponentama .

Kako funkcionira Kubecost?

  • Troškovni model prima cijene za usluge putem API-ja cloud provajdera.
  • Nadalje, u zavisnosti od vrste željeza čvora i regije, izračunava se cijena po čvoru.
  • Na osnovu cijene pokretanja čvorova, svaki list pod dobiva cijenu po satu korištenja CPU-a, po gigabajtu utrošene memorije i po satu po gigabajtu pohranjenih podataka - ovisno o čvoru na kojem je radio ili klasi pohrane.
  • Na osnovu troškova rada pojedinačnih podova, plaćanje se obračunava za prostore imena, usluge, Deployments, StatefulSets.
  • Statistika se izračunava korišćenjem metrike koju obezbeđuju kube-state-metrics i node-exporter.

Važno je uzeti u obzir da je Kubecost podrazumevano broji samo resurse dostupne u Kubernetesu. Eksterne baze podataka, GitLab serveri, S3 skladišta i drugi servisi koji nisu u klasteru (čak i ako se nalaze u istom oblaku) nisu mu vidljivi. Iako za GCP i AWS možete dodati ključeve svojih servisnih računa i izračunati sve zajedno.

postavljanje

Kubecost zahtijeva:

  • Kubernetes verzija 1.8 i novije;
  • kube-state-metrics;
  • Prometej;
  • čvor-izvoznik.

Desilo se da su u našim klasterima svi ovi uslovi unapred ispunjeni, pa se ispostavilo da je dovoljno samo navesti tačnu krajnju tačku za pristup Prometeju. Međutim, službeni kubecost Helm grafikon sadrži sve što vam je potrebno za rad na golom klasteru.

Postoji nekoliko načina da instalirate Kubecost:

  1. Standardna metoda instalacije opisana u uputstva na web stranici programera dodajte spremište analizatora troškova u Helm, a zatim instalirajte grafikon. Ostaje samo da prosledite svoj port i podesite postavke na željeno stanje ručno (preko kubectl-a) i/ili korišćenjem web interfejsa modela troškova.

    Ovu metodu nismo ni isprobali, jer ne koristimo gotove konfiguracije treće strane, ali izgleda kao dobra opcija „samo isprobajte sami“. Ako već imate instalirane neke od komponenti sistema ili želite više finog podešavanja, bolje je razmotriti drugi put.

  2. Koristi se u suštini isti grafikon, ali ga sami konfigurišite i instalirajte na bilo koji pogodan način.

    Kao što je već spomenuto, pored samog kubecost-a, ovaj grafikon sadrži grafikone Grafana i Prometheus, koji se također mogu prilagoditi po želji.

    Dostupno na grafikonu values.yaml za analizator troškova vam omogućava da konfigurišete:

    • spisak komponenti analizatora troškova koje treba primijeniti;
    • vaša krajnja tačka za Prometheus (ako je već imate);
    • domene i druge postavke ulaza za model cijene i Grafanu;
    • napomene za mahune;
    • potreba za korištenjem trajnog skladišta i njegova veličina.

    Kompletna lista dostupnih opcija konfiguracije sa opisima je dostupna u dokumentaciju.

    Budući da kubecost u svojoj osnovnoj verziji ne može ograničiti pristup, morat ćete odmah konfigurirati basic-auth za web panel.

  3. Instalacija samo jezgro sistema - troškovni model. Da biste to učinili, morate imati instaliran Prometheus u klasteru i navesti odgovarajuću vrijednost njegove adrese u varijabli prometheusEndpoint za Helma. Nakon toga - prijavite se skup YAML konfiguracija u klasteru.

    Opet, morat ćete ručno dodati Ingress sa basic-auth. Konačno, morat ćete dodati odjeljak za prikupljanje metrike modela troškova extraScrapeConfigs u Prometheus konfiguraciji:

    - 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

Šta dobijamo?

Uz kompletnu instalaciju, na raspolaganju imamo kubecost i Grafana web panel sa setom komandnih ploča.

Ukupni troškovi, prikazan na glavnom ekranu, zapravo prikazuje procijenjenu cijenu resursa za mjesec. Ovo projektovano cijena koja odražava troškove korištenja klastera (mjesečno) na trenutnom nivou potrošnje resursa.

Ova metrika je više za analizu troškova i njihovu optimizaciju. Nije baš zgodno gledati ukupne troškove za apstraktni jul u kubecost: morat ćete idi na naplatu. Ali možete vidjeti troškove raščlanjene po imenskim prostorima, oznakama, podovima za 1/2/7/30/90 dana, što vam naplata nikada neće pokazati.

Kubecost recenzija za uštedu novca na Kubernetesu u oblacima

Govoreći o etikete. Trebali biste odmah otići u postavke i postaviti nazive oznaka koje će se koristiti kao dodatne kategorije za grupisanje troškova:

Kubecost recenzija za uštedu novca na Kubernetesu u oblacima

Na njih možete okačiti bilo koje etikete - zgodno ako već imate sopstveni sistem označavanja.

Takođe tamo možete promijeniti adresu krajnje tačke API-ja na koju se povezuje model troškova, prilagoditi veličinu popusta u GCP-u i postaviti vlastite cijene za resurse i valutu za njihovo mjerenje (iz nekog razloga ova funkcija ne utiče na Ukupne troškove).

Kubecost može prikazati različite problemi u klasteru (pa čak i upozorenje u slučaju opasnosti). Nažalost, opcija se ne može konfigurirati i stoga, ako imate okruženja za programere i koristite ih, stalno ćete vidjeti nešto poput ovoga:

Kubecost recenzija za uštedu novca na Kubernetesu u oblacima

Važan alat - Cluster Savings. Mjeri aktivnost podova (potrošnja resursa, uključujući i mrežne), a također izračunava koliko novca i na čemu možete uštedjeti.

Možda se čini da su savjeti za optimizaciju prilično očigledni, ali iskustvo govori da još uvijek postoji nešto za pogledati. Konkretno, prati se mrežna aktivnost podova (Kubecost predlaže obratiti pažnju na neaktivne), uspoređuje se tražena i stvarna potrošnja memorije i CPU-a, kao i CPU koji koriste čvorovi klastera (predlaže da se nekoliko čvorova sažima u jedan), disk opterećenje i još nekoliko desetina parametara.

Kao i kod bilo kojeg pitanja optimizacije, optimizacija resursa na osnovu podataka Kubecost zahtijeva: tretirati sa oprezom. Na primjer, Cluster Savings predlaže brisanje čvorova, tvrdeći da je sigurno, ali ne uzima u obzir prisustvo selektora čvorova i mrlja raspoređenih na njima, a koji nisu dostupni na drugim čvorovima. I općenito, čak i autori proizvoda u svom nedavni članak (usput, može biti vrlo korisno za one koji su zainteresirani za temu projekta) preporučuje se da ne žurite bezglavo u optimizaciju troškova, već da promišljeno pristupite pitanju.

Ishodi

Nakon mjesec dana korištenja kubecost-a na nekoliko projekata, možemo zaključiti da je ovo zanimljiv (i ujedno jednostavan za učenje i instaliranje) alat za analizu i optimizaciju troškova za usluge cloud provajdera koji se koriste za Kubernetes klastere. Izračuni su se pokazali vrlo preciznima: u našim eksperimentima poklopili su se s onim što su dobavljači zapravo zahtijevali.

Postoje i neki nedostaci: postoje nekritične greške, a na nekim mjestima funkcionalnost ne pokriva potrebe specifične za neke projekte. Međutim, ako trebate brzo shvatiti kuda ide novac i šta se može "srezati" kako biste dosljedno smanjili račun za usluge u oblaku za 5-30% (to se dogodilo u našem slučaju), ovo je odlična opcija .

PS

Pročitajte i na našem blogu:

izvor: www.habr.com

Dodajte komentar