Kubecost recenzija za uštedu novca na Kubernetesu u oblacima

Kubecost recenzija za uštedu novca na Kubernetesu u oblacima

Trenutačno sve više tvrtki prenosi svoju infrastrukturu s hardverskih poslužitelja i vlastitih virtualnih strojeva u oblak. Ovo je rješenje lako objasniti: nema potrebe brinuti se o hardveru, klaster se lako konfigurira na mnogo različitih načina... i što je najvažnije, postojeće tehnologije (kao što je Kubernetes) omogućuju jednostavno skaliranje računalne snage ovisno o opterećenju .

Financijski aspekt je uvijek bitan. Alat o kojem se govori u ovom članku osmišljen je za smanjenje proračuna pri korištenju infrastrukture oblaka s Kubernetesom.

Uvod

Kubecost je kalifornijski startup iz Googlea, koji kreira rješenje za izračun troškova infrastrukture u cloud servisima (unutar Kubernetes klastera + zajednički resursi), pronalaženje uskih grla u postavkama klastera i slanje odgovarajućih obavijesti Slacku.

Imamo klijente s Kubernetesom iu poznatim AWS i GCP oblacima i u Azureu, što je rjeđe za Linux zajednicu - općenito, na svim platformama koje podržava Kubecost. Za neke od njih sami izračunavamo troškove usluga unutar klastera (po metodi sličnoj 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 takvih poslova.

Izvorni kod glavnog modula Kubecost otvoren je pod uvjetima licence otvorenog koda (Apache licenca 2.0). Može se slobodno koristiti, a dostupne značajke trebale bi biti dovoljne za male projekte. Međutim, posao je posao: ostatak proizvoda je zatvoren, može ga koristiti plaćene pretplate, što također podrazumijeva komercijalnu podršku. Uz to, autori nude besplatnu licencu za male klastere (1 klaster s 10 čvorova - tijekom pisanja ovog članka ovo je ograničenje prošireno na 20 čvorova) ili probno razdoblje s punim mogućnostima u trajanju od 1 mjeseca.

Kako sve funkcionira

Dakle, glavni dio Kubecosta je aplikacija troškovni model, napisano u Go. Naziva se Helmova karta koja opisuje cijeli sustav analizator troškova a u svojoj jezgri je sklop od cost-modela s Prometejem, Grafanom i nekoliko nadzornih ploča.

Općenito govoreći, cost-model ima vlastito web sučelje, koje prikazuje grafikone i detaljnu statistiku troškova u tabelarnom obliku, kao i, naravno, savjete za optimizaciju troškova. Nadzorne ploče predstavljene u Grafani ranija su faza u razvoju Kubecosta i sadrže većinu istih podataka kao troškovni model, nadopunjujući ih uobičajenim statistikama o potrošnji CPU/memorije/mreže/disknog prostora u klasteru i njegovom komponente.

Kako radi Kubecost?

  • Cost-model prima cijene usluga putem API-ja cloud providera.
  • Nadalje, ovisno o vrsti željeza čvora i regiji, izračunava se trošak po čvoru.
  • Na temelju troškova pokretanja čvorova, svaka lisna grupa dobiva cijenu po satu korištenja CPU-a, po gigabajtu potrošene memorije i po satu po gigabajtu pohranjenih podataka - ovisno o čvoru na kojem se izvodi ili klasi pohrane.
  • Na temelju troškova upravljanja pojedinačnim podovima, plaćanje se izračunava za prostore imena, usluge, implementacije, StatefulSets.
  • Statistika se izračunava pomoću metrike koju pružaju kube-state-metrics i node-exporter.

Važno je uzeti u obzir da Kubecost prema zadanim postavkama broji samo resurse dostupne u Kubernetesu. Vanjske baze podataka, GitLab poslužitelji, 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.

Instalacija

Kubecost zahtijeva:

  • Kubernetes verzija 1.8 i novija;
  • kube-stanje-metrika;
  • Prometej;
  • čvor-izvoznik.

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

Kubecost možete instalirati na nekoliko načina:

  1. Standardni način ugradnje opisan u instrukcije na web stranici razvojnog programera. Obavezno dodajte repozitorij analizatora troškova u Helm, a zatim instalirajte grafikon. Sve što preostaje je proslijediti svoj port i podesiti postavke na željeno stanje ručno (putem kubectl) i/ili korištenjem web sučelja cost-model.

    Nismo čak ni isprobali ovu metodu, budući da ne koristimo gotove konfiguracije trećih strana, ali izgleda kao dobra opcija "isprobajte sami". Ako već imate instaliranu neku od komponenti sustava ili želite dodatno fino podešavanje, bolje je razmisliti o drugom putu.

  2. Koristite suštinski isti grafikon, ali ga sami konfigurirajte i instalirajte na bilo koji prikladan način.

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

    Dostupno na karti values.yaml za analizator troškova vam omogućuje da konfigurirate:

    • popis komponenti analizatora troškova koje je potrebno implementirati;
    • vaša krajnja točka za Prometheus (ako je već imate);
    • domene i ostale ulazne postavke za cost-model i Grafana;
    • bilješke za mahune;
    • potreba korištenja trajnog skladišta i njegova veličina.

    Potpuni popis dostupnih konfiguracijskih opcija s opisima dostupan je u dokumentacija.

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

  3. uspostaviti samo jezgra sustava - 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 Helm. Nakon toga - primijeniti skup YAML konfiguracija u klasteru.

    Opet, morat ćete ručno dodati Ingress s osnovnom autentifikacijom. Konačno, morat ćete dodati odjeljak za prikupljanje mjernih podataka 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

Što dobivamo?

Uz potpunu instalaciju na raspolaganju su nam kubecost i Grafana web panel sa setom nadzornih ploča.

Ukupni trošak, prikazan na glavnom ekranu, zapravo pokazuje procijenjenu cijenu resursa za mjesec. Ovaj projektiran cijena koja odražava trošak korištenja klastera (mjesečno) na trenutnoj razini potrošnje resursa.

Ova metrika više služi za analizu troškova i njihovu optimizaciju. Nije baš zgodno gledati ukupne troškove za apstraktni srpanj u kubecost-u: 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 prikazati.

Kubecost recenzija za uštedu novca na Kubernetesu u oblacima

Kad smo već kod etikete. Trebate odmah otići na postavke i postaviti nazive oznaka koje će se koristiti kao dodatne kategorije za grupiranje troškova:

Kubecost recenzija za uštedu novca na Kubernetesu u oblacima

Na njih možete objesiti bilo koje naljepnice - zgodno ako već imate vlastiti sustav označavanja.

Tamo također možete promijeniti adresu krajnje točke API-ja na koju se troškovni model povezuje, prilagoditi veličinu popusta u GCP-u i postaviti vlastite cijene za resurse i valutu za njihovo mjerenje (iz nekog razloga značajka ne utječe na ukupni trošak).

Kubecost može prikazati razne problema u klasteru (pa čak i uzbuna 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 - Klaster štednja. Mjeri aktivnost podova (potrošnja resursa, uključujući mrežne resurse), a također izračunava koliko novca možete uštedjeti i na čemu.

Možda se čini da su savjeti za optimizaciju sasvim očiti, ali iskustvo govori da još uvijek postoji nešto za pogledati. Posebno se prati mrežna aktivnost podova (Kubecost predlaže da se obrati pozornost na neaktivne), uspoređuje se tražena i stvarna potrošnja memorije i CPU-a, kao i CPU koji koriste čvorovi klastera (predlaže sažimanje nekoliko čvorova u jedan), disk opterećenje i još nekoliko desetaka parametara.

Kao i kod svakog problema s optimizacijom, optimizacija resursa na temelju Kubecost podataka zahtijeva: postupati s oprezom. Na primjer, Cluster Savings predlaže brisanje čvorova, tvrdeći da je to sigurno, ali ne uzima u obzir prisutnost selektora čvorova i kvarova u podovima raspoređenim na njima koji nisu dostupni na drugim čvorovima. I općenito, čak i autori proizvoda u svojim nedavni članak (usput, može biti vrlo korisno za one koji su zainteresirani za temu projekta) preporučuje se ne žuriti bezglavo u optimizaciju troškova, već promišljeno pristupiti pitanju.

Rezultati

Nakon što smo mjesec dana koristili kubecost na nekoliko projekata, možemo zaključiti da je to zanimljiv (i jednostavan za naučiti i instalirati) alat za analizu i optimizaciju troškova za usluge cloud providera koji se koriste za Kubernetes klastere. Izračuni su se pokazali vrlo točnima: u našim eksperimentima podudarali su se s onim što su dobavljači zapravo zahtijevali.

Postoje i neki nedostaci: postoje nekritične pogreške, a na nekim mjestima funkcionalnost ne pokriva potrebe specifične za neke projekte. Međutim, ako trebate brzo shvatiti kamo ide novac i što 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 izvrsna opcija .

PS

Pročitajte i na našem blogu:

Izvor: www.habr.com

Dodajte komentar