Kubecost Bewäertung fir Suen op Kubernetes an de Wolleken ze spueren

Kubecost Bewäertung fir Suen op Kubernetes an de Wolleken ze spueren

De Moment transferéieren ëmmer méi Firmen hir Infrastruktur vun Hardware-Server an hiren eegene virtuelle Maschinnen an d'Wollek. Dës Léisung ass einfach z'erklären: et ass keng Suergen iwwer Hardware, de Stärekoup ass einfach op vill verschidde Weeër konfiguréiert ... an am wichtegsten, verfügbar Technologien (wéi Kubernetes) maachen et méiglech d'Rechenkraaft einfach ze skaléieren ofhängeg vun der Belaaschtung .

De finanziellen Aspekt ass ëmmer wichteg. Den Tool, deen an dësem Artikel diskutéiert gëtt, ass entwéckelt fir Budgeten ze reduzéieren wann Dir Cloud Infrastruktur mat Kubernetes benotzt.

Aféierung

Kubecost ass e kalifornesche Startup vu Google, erstellt eng Léisung fir d'Berechnung vun Infrastrukturkäschten a Cloud Servicer (bannent engem Kubernetes Cluster + gemeinsame Ressourcen), sicht no Flaschenhalser a Cluster Astellungen a schéckt entspriechend Notifikatiounen un Slack.

Mir hunn Cliente mat Kubernetes souwuel an de vertraute AWS- a GCP-Wolleken, an an Azure, wat méi rar ass fir d'Linux Gemeinschaft - am Allgemengen, op all Plattformen déi vu Kubecost ënnerstëtzt ginn. Fir e puer vun hinnen berechene mir d'Käschte vun den Intra-Cluster-Servicer selwer (mat enger Method ähnlech wéi déi vu Kubecost benotzt), an iwwerwaachen och Infrastrukturkäschten a probéieren se ze optimiséieren. Dofir ass et logesch, datt mir un der Méiglechkeet interesséiert waren, esou Aufgaben ze automatiséieren.

De Quellcode vum Haapt Kubecost Modul ass op ënner de Bedéngungen vun der Open Source Lizenz (Apache License 2.0). Et ka fräi benotzt ginn an déi verfügbar Features solle genuch sinn fir kleng Projeten. Wéi och ëmmer, Geschäft ass Geschäft: de Rescht vum Produkt ass zou, et ka benotzt ginn bezuelt Abonnementer, déi och kommerziell Ënnerstëtzung implizéieren. Zousätzlech bidden d'Auteuren eng gratis Lizenz fir kleng Cluster (1 Cluster mat 10 Wirbelen - während dem Schreiwen vun dësem Artikel ass dës Limit op 20 Wirbelen erweidert) oder eng Testperiod mat voller Fäegkeeten fir 1 Mount.

Wéi alles funktionnéiert

Also, den Haaptdeel vu Kubecost ass d'Applikatioun Käschten-Modell, geschriwwen an Go. Eng Helm Chart, déi de ganze System beschreift, gëtt genannt Käschten-analysator an am Kär ass eng Assemblée vun engem Käschte-Modell mat Prometheus, Grafana a verschiddenen Dashboards.

Am allgemengen huet de Käschte-Modell seng eege Web-Interface, déi Grafiken an detailléiert Statistiken iwwer d'Käschte an der Tabellform weist, souwéi natierlech Tipps fir d'Käschte ze optimiséieren. D'Dashboards, déi a Grafana presentéiert ginn, sinn eng fréier Etapp an der Entwécklung vu Kubecost a enthalen vill vun de selwechten Donnéeën wéi de Käschtemodell, ergänzen se mat den übleche Statistiken iwwer de Konsum vu CPU / Memory / Network / Disk Space am Cluster a seng Komponenten.

Wéi funktionnéiert Kubecost?

  • Käschtemodell kritt Präisser fir Servicer duerch d'API vu Cloud Ubidder.
  • Weider, ofhängeg vun der Eisenart vum Node an der Regioun, ginn d'Käschte pro Node berechent.
  • Baséierend op d'Käschte fir Noden ze lafen, kritt all Blat Pod e Käschte pro Stonn CPU Benotzung, pro Gigabyte verbraucht Erënnerung, a pro Stonn pro Gigabyte vun gespäichert Daten - ofhängeg vum Node op deem et leeft oder der Klass vun der Späichere.
  • Baséierend op d'Käschte fir eenzel Pods ze bedreiwen, gëtt d'Bezuelung fir Nummraim, Servicer, Deployments, StatefulSets berechent.
  • Statistike ginn berechent mat Metriken, déi vu Kube-State-Metriken an Node-Exporter geliwwert ginn.

Et ass wichteg ze berücksichtegen datt Kubecost par défaut zielt nëmmen Ressourcen déi a Kubernetes verfügbar sinn. Extern Datenbanken, GitLab Server, S3 Späicheren an aner Servicer, déi net am Cluster sinn (och wann se an der selwechter Wollek sinn) sinn net sichtbar. Och wann Dir fir GCP an AWS d'Schlësselen vun Äre Servicekonten derbäi kënnt an alles zesumme berechnen.

Kader

Kubecost erfuerdert:

  • Kubernetes Versioun 1.8 a méi héich;
  • Kube-Staat-Metriken;
  • Prometheus;
  • Node-Exporter.

Et ass geschitt, datt an eise Stärekéip all dës Konditiounen am Viraus erfëllt goufen, sou datt et duer war, just de richtegen Endpunkt fir den Zougang zum Prometheus ze spezifizéieren. Wéi och ëmmer, déi offiziell Kubecost Helm Chart enthält alles wat Dir braucht fir op engem bloe Cluster ze lafen.

Et gi verschidde Weeër fir Kubecost z'installéieren:

  1. Standard Installatioun Method beschriwwen an Instruktiounen op der Websäit vum Entwéckler. Obligatoresch füügt de Käschte-Analyzer-Repository un Helm, an installéiert dann d'Diagramm. Alles wat bleift ass Ären Hafen weiderzebréngen an d'Astellunge manuell op de gewënschten Zoustand unzepassen (iwwer kubectl) an / oder d'Käschtemodell Webinterface benotzt.

    Mir hunn dës Method net mol probéiert, well mir keng Drëtt-Partei fäerdeg Konfiguratiounen benotzen, awer et gesäit aus wéi eng gutt Optioun "probéiert et selwer". Wann Dir schonn e puer vun de Systemkomponenten installéiert hutt oder Dir wëllt méi Feintuning, ass et besser den zweete Wee ze berücksichtegen.

  2. Benotzt wesentlech déi selwecht Diagramm, mee konfiguréieren an installéiert et selwer op all praktesch Manéier.

    Wéi scho gesot, nieft der Kubecost selwer, enthält dës Grafik Grafana a Prometheus Charts, déi och wéi gewënscht kënne personaliséiert ginn.

    Verfügbar op der Grafik values.yaml fir Käschtenanalysator erlaabt Iech ze konfiguréieren:

    • eng Lëscht vun Käschte-Analyzer Komponenten déi agesat musse ginn;
    • Ären Endpunkt fir Prometheus (wann Dir schonn een hutt);
    • Domainen an aner ingress Astellunge fir Käschten-Modell an Grafana;
    • Annotatiounen fir Pods;
    • de Besoin fir permanent Stockage a seng Gréisst ze benotzen.

    Eng komplett Lëscht vun verfügbare Konfiguratiounsoptioune mat Beschreiwunge ass verfügbar an Dokumentatioun.

    Zënter Kubecost a senger Basisversioun den Zougang net kann beschränken, musst Dir direkt Basis-Auth fir de Webpanel konfiguréieren.

  3. Installéieren nëmmen de System Kär - Käschte-Modell. Fir dëst ze maachen, musst Dir Prometheus am Stärekoup installéiert hunn an de entspriechende Wäert vu senger Adress an der Variabel spezifizéieren prometheusEndpoint fir Helm. Duerno - gëllen Set vun YAML Konfiguratiounen am Cluster.

    Erëm, Dir musst Ingress manuell mat Basic-Auth derbäisetzen. Schlussendlech musst Dir eng Sektioun derbäi fir Käschtemodell Metriken ze sammelen extraScrapeConfigs an der Prometheus Konfiguratioun:

    - 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

Wat kréien mir?

Mat enger voller Installatioun hu mir de Kubecost a Grafana Web Panel mat engem Set vun Dashboards zur Verfügung.

Gesamtbudget, um Haaptbildschierm ugewisen, weist tatsächlech d'geschätzte Käschte vun de Ressourcen fir de Mount. Dëst virgesinn Präis reflektéiert d'Käschte fir de Cluster ze benotzen (pro Mount) um aktuellen Niveau vum Ressourceverbrauch.

Dës Metrik ass méi fir Ausgaben ze analyséieren an se ze optimiséieren. Et ass net ganz praktesch d'Gesamtkäschte fir abstrakt Juli an kubecost ze kucken: Dir musst goen op Rechnung. Awer Dir kënnt d'Käschte gesinn opgedeelt duerch Nummraim, Etiketten, Pods fir 1/2/7/30/90 Deeg, déi Rechnung Iech ni weisen.

Kubecost Bewäertung fir Suen op Kubernetes an de Wolleken ze spueren

Apropos Etiketten. Dir sollt direkt an d'Astellunge goen an d'Nimm vun den Etiketten setzen, déi als zousätzlech Kategorien fir d'Gruppéierungskäschte benotzt ginn:

Kubecost Bewäertung fir Suen op Kubernetes an de Wolleken ze spueren

Dir kënnt all Etiketten op hinnen hänken - praktesch wann Dir schonn Ären eegene Etikettéierungssystem hutt.

Och do kënnt Dir d'Adress vum API Endpunkt änneren, mat deem de Käschtemodell verbënnt, d'Reduktiounsgréisst am GCP upassen an Är eege Präisser fir Ressourcen a Währung fir hir Miessung setzen (aus irgendege Grënn beaflosst d'Feature net d'Gesamtkäschte).

Kubecost kann verschidde weisen Problemer am Cluster (a souguer am Fall vun Gefor alarméieren). Leider ass d'Optioun net konfiguréierbar, an dofir, wann Dir Ëmfeld fir Entwéckler hutt a se benotzt, gesitt Dir dauernd eppes wéi dat:

Kubecost Bewäertung fir Suen op Kubernetes an de Wolleken ze spueren

E wichtegt Instrument - Cluster spueren. Et moosst d'Aktivitéit vun de Pods (Verbrauch vu Ressourcen, inklusiv Ressourcen Ressourcen), a berechent och wéi vill Suen Dir spuere kënnt an op wat.

Et kann schéngen datt Optimisatiounstips ganz offensichtlech sinn, awer d'Erfahrung seet datt et nach ëmmer eppes ze kucken ass. Besonnesch d'Netzwierkaktivitéit vu Pods gëtt iwwerwaacht (Kubecost proposéiert opmierksam op inaktiven), déi ugefrote an aktuell Erënnerung an CPU Konsum gëtt vergläicht, souwéi d'CPU déi vu Clusternoden benotzt gëtt (seit datt e puer Noden an een zesummeklappen), Disk lued an e puer Dose méi Parameteren.

Wéi mat all Optimisatiounsprobleem, erfuerdert d'Optimisatioun vun Ressourcen op Basis vu Kubecost Daten: mat Vorsicht behandelen. Zum Beispill, Cluster Savings proposéiert d'Noden ze läschen, behaapt datt et sécher ass, awer berécksiichtegt net d'Präsenz vun Node-Selecteuren a Flecken an de Pods, déi op hinnen ofgesat sinn, déi net op anere Wirbelen verfügbar sinn. An am Allgemengen, och d'Auteuren vum Produit an hirem rezent Artikel (iwwregens, et kann ganz nëtzlech sinn fir déi, déi un d'Thema vum Projet interesséiert sinn) et ass recommandéiert net an d'Käschteoptimiséierung ze rennen, mee d'Thema nodenklech unzegoen.

Resultater

Nodeems mir Kubecost fir e Mount op e puer Projete benotzt hunn, kënne mir schléissen datt et en interessant (an och einfach ze léieren an installéieren) Tool ass fir d'Käschte fir d'Servicer vu Cloud Providere fir Kubernetes Cluster ze analyséieren an ze optimiséieren. D'Berechnunge si ganz genee eraus: an eisen Experimenter si se zesummegefall mat deem wat d'Provider eigentlech gefuerdert hunn.

Et ginn och e puer Nodeeler: et ginn net kritesch Bugs, an op e puer Plazen deckt d'Funktionalitéit net d'Bedierfnesser spezifesch fir e puer Projeten. Wann Dir awer séier muss verstoen wou d'Sue goen a wat "geschnidde" ka ginn, fir d'Rechnung fir d'Cloudservicer konsequent ëm 5-30% ze reduzéieren (dat ass wat an eisem Fall geschitt ass), ass dat eng super Optioun .

PS

Liest och op eisem Blog:

Source: will.com

Setzt e Commentaire