Revisió de Kubecost per estalviar diners a Kubernetes als núvols

Revisió de Kubecost per estalviar diners a Kubernetes als núvols

Actualment, cada cop més empreses estan transferint la seva infraestructura dels servidors de maquinari i les seves pròpies màquines virtuals al núvol. Aquesta solució és fàcil d'explicar: no cal preocupar-se pel maquinari, el clúster es configura fàcilment de moltes maneres diferents... i el més important, les tecnologies existents (com Kubernetes) permeten simplement escalar la potència de càlcul en funció de la càrrega. .

L'aspecte financer sempre és important. L'eina que es parla en aquest article està dissenyada per ajudar a reduir els pressupostos quan s'utilitza la infraestructura del núvol amb Kubernetes.

Introducció

Kubecost és una startup californiana de Google, que crea una solució per calcular els costos d'infraestructura en serveis al núvol (dins d'un clúster Kubernetes + recursos compartits), trobar colls d'ampolla a la configuració del clúster i enviar les notificacions adequades a Slack.

Tenim clients amb Kubernetes tant als núvols familiars d'AWS com de GCP i, més rarament per a la comunitat Linux, Azure, en general, a totes les plataformes compatibles amb Kubecost. Per a alguns d'ells, calculem nosaltres mateixos els costos dels serveis intraclúster (mitjançant un mètode similar al que fa servir Kubecost), i també supervisem els costos d'infraestructura i intentem optimitzar-los. Per tant, és lògic que estiguéssim interessats en la possibilitat d'automatitzar aquestes tasques.

El codi font del mòdul principal de Kubecost està obert sota els termes de la llicència de codi obert (Apache License 2.0). Es pot utilitzar lliurement i les funcions disponibles haurien de ser suficients per a projectes petits. Tanmateix, el negoci és negoci: la resta del producte està tancat, pot ser utilitzat per subscripcions de pagament, que també impliquen suport comercial. A més, els autors ofereixen una llicència gratuïta per a grups petits (1 clúster amb 10 nodes; durant la redacció d'aquest article, aquest límit s'ha ampliat a 20 nodes) o un període de prova amb capacitats completes durant 1 mes.

Com funciona tot

Per tant, la part principal de Kubecost és l'aplicació model de costos, escrit en Go. S'anomena un gràfic Helm que descriu tot el sistema analitzador de costos i en el seu nucli hi ha un muntatge a partir d'un model de cost amb Prometheus, Grafana i diversos quadres de comandament.

En termes generals, cost-model té la seva pròpia interfície web, que mostra gràfics i estadístiques detallades de costos en forma de taula, així com, per descomptat, consells per optimitzar els costos. Els quadres de comandament presentats a Grafana són una etapa anterior en el desenvolupament de Kubecost i contenen gairebé les mateixes dades que el model de cost, complementant-los amb les estadístiques habituals sobre el consum de CPU/memòria/xarxa/espai en disc al clúster i els seus components. .

Com funciona Kubecost?

  • Cost-model rep els preus dels serveis a través de l'API dels proveïdors de núvol.
  • A més, depenent del tipus de ferro del node i de la regió, es calcula el cost per node.
  • En funció del cost d'execució dels nodes, cada pod de fulla obté un cost per hora d'ús de la CPU, per gigabyte de memòria consumit i per hora per gigabyte de dades emmagatzemades, depenent del node en què s'executava o de la classe d'emmagatzematge.
  • En funció del cost d'operar pods individuals, el pagament es calcula per a espais de noms, serveis, desplegaments i StatefulSets.
  • Les estadístiques es calculen mitjançant mètriques proporcionades per kube-state-metrics i node-exporter.

És important tenir en compte que Kubecost per defecte només compta els recursos disponibles a Kubernetes. Les bases de dades externes, els servidors GitLab, els emmagatzematges S3 i altres serveis que no es troben al clúster (encara que estiguin situats al mateix núvol) no són visibles per a aquest. Encara que per a GCP i AWS podeu afegir les claus dels vostres comptes de servei i calcular-ho tot junts.

Instal · lació

Kubecost requereix:

  • Kubernetes versió 1.8 i superior;
  • mètrica-estat-kube;
  • Prometeu;
  • node-exportador.

Va succeir que als nostres clústers es complien totes aquestes condicions per endavant, així que va resultar que n'hi havia prou amb especificar el punt final correcte per accedir a Prometheus. Tanmateix, el gràfic oficial de Kubecost Helm conté tot el que necessiteu per executar-se en un clúster nu.

Hi ha diverses maneres d'instal·lar Kubecost:

  1. Mètode d'instal·lació estàndard descrit a instruccions al lloc web del desenvolupador. Obligatori afegiu el dipòsit de l'analitzador de costos a Helm i, a continuació, instal·leu el gràfic. Només queda reenviar el port i ajustar la configuració a l'estat desitjat manualment (mitjançant kubectl) i/o utilitzant la interfície web del model de cost.

    Ni tan sols hem provat aquest mètode, ja que no fem servir configuracions ja fetes de tercers, però sembla una bona opció de "proveu-ho per vosaltres mateixos". Si ja teniu instal·lats alguns dels components del sistema o voleu ajustar-los més, és millor considerar el segon camí.

  2. Utilitzar essencialment el mateix gràfic, però configureu-lo i instal·leu-lo vosaltres mateixos de qualsevol manera convenient.

    Com ja s'ha esmentat, a més del propi kubecost, aquest gràfic conté els gràfics de Grafana i Prometheus, que també es poden personalitzar com es desitgi.

    Disponible al gràfic values.yaml per a l'analitzador de costos us permet configurar:

    • una llista de components de l'analitzador de costos que s'han de desplegar;
    • el vostre punt final per a Prometeu (si ja en teniu un);
    • dominis i altres configuracions d'entrada per al model de cost i Grafana;
    • anotacions per a beines;
    • la necessitat d'utilitzar un emmagatzematge permanent i la seva mida.

    Una llista completa d'opcions de configuració disponibles amb descripcions està disponible a documentació.

    Com que kubecost en la seva versió bàsica no pot restringir l'accés, haureu de configurar immediatament l'autenticació bàsica per al tauler web.

  3. Instal·lar només el nucli del sistema - Model de costos. Per fer-ho, heu de tenir Prometheus instal·lat al clúster i especificar el valor corresponent de la seva adreça a la variable prometheusEndpoint per Helm. Després d'això - aplicar conjunt de configuracions YAML al clúster.

    De nou, haureu d'afegir manualment Ingress amb basic-auth. Finalment, haureu d'afegir una secció per recopilar mètriques del model de costos extraScrapeConfigs a la configuració de Prometheus:

    - 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

Què aconseguim?

Amb una instal·lació completa, tenim a la nostra disposició el panell web kubecost i Grafana amb un conjunt de taulers.

Cost total, que es mostra a la pantalla principal, en realitat mostra el cost estimat dels recursos per al mes. Això projectat preu que reflecteix el cost d'utilitzar el clúster (per mes) al nivell actual de consum de recursos.

Aquesta mètrica és més per analitzar despeses i optimitzar-les. No és gaire convenient mirar els costos totals del juliol abstracte a kubecost: ho haureu de fer anar a la facturació. Però podeu veure els costos desglossats per espais de noms, etiquetes, pods durant 1/2/7/30/90 dies, que la facturació no us mostrarà mai.

Revisió de Kubecost per estalviar diners a Kubernetes als núvols

Parlant de etiquetes. Hauríeu d'anar immediatament a la configuració i definir els noms de les etiquetes que s'utilitzaran com a categories addicionals per agrupar els costos:

Revisió de Kubecost per estalviar diners a Kubernetes als núvols

Podeu penjar-hi qualsevol etiqueta, convenient si ja teniu el vostre propi sistema d'etiquetatge.

També allà podeu canviar l'adreça del punt final de l'API al qual es connecta el model de cost, ajustar la mida del descompte a GCP i establir els vostres propis preus per als recursos i la moneda per a la seva mesura (per algun motiu, la funció no afecta el cost total).

Kubecost pot mostrar diversos problemes al clúster (i fins i tot alerta en cas de perill). Malauradament, l'opció no és configurable i, per tant, si teniu entorns per a desenvolupadors i els feu servir, veureu constantment alguna cosa com això:

Revisió de Kubecost per estalviar diners a Kubernetes als núvols

Una eina important - Estalvi del Clúster. Mesura l'activitat dels pods (consum de recursos, inclosos els de xarxa), i també calcula quants diners i en què pots estalviar.

Pot semblar que els consells d'optimització són força evidents, però l'experiència suggereix que encara hi ha alguna cosa a mirar. En particular, es controla l'activitat de xarxa dels pods (Kubecost suggereix prestar atenció als inactius), es compara la memòria sol·licitada i real i el consum de CPU, així com la CPU utilitzada pels nodes del clúster (suggereix col·lapsar diversos nodes en un), disc. càrrega i un parell de dotzenes de paràmetres més.

Com amb qualsevol problema d'optimització, l'optimització dels recursos basats en dades de Kubecost requereix: tractar amb precaució. Per exemple, Cluster Savings suggereix suprimir nodes, afirmant que és segur, però no té en compte la presència de selectors de nodes i taques en els pods desplegats en ells que no estan disponibles en altres nodes. I en general, fins i tot els autors del producte en el seu article recent (per cert, pot ser molt útil per a aquells que estiguin interessats en el tema del projecte) es recomana no precipitar-se en l'optimització de costos, sinó abordar el problema amb reflexió.

Resultats de

Després d'utilitzar kubecost durant un mes en un parell de projectes, podem concloure que és una eina interessant (i també fàcil d'aprendre i instal·lar) per analitzar i optimitzar els costos dels serveis dels proveïdors de núvol utilitzats per als clústers de Kubernetes. Els càlculs resulten ser molt precisos: en els nostres experiments van coincidir amb el que realment requerien els proveïdors.

També hi ha alguns inconvenients: hi ha errors no crítics i, en alguns llocs, la funcionalitat no cobreix les necessitats específiques d'alguns projectes. Tanmateix, si necessiteu entendre ràpidament cap a on van els diners i què es pot "tallar" per reduir constantment la factura dels serveis al núvol entre un 5 i un 30% (això és el que va passar en el nostre cas), aquesta és una gran opció. .

PS

Llegeix també al nostre blog:

Font: www.habr.com

Afegeix comentari