Pagrepaso sa Kubecost alang sa pagtipig og salapi sa Kubernetes sa mga panganod

Pagrepaso sa Kubecost alang sa pagtipig og salapi sa Kubernetes sa mga panganod

Sa pagkakaron, nagkadaghan ang mga kompanya nga nagbalhin sa ilang imprastraktura gikan sa mga server sa hardware ug ilang kaugalingon nga mga virtual machine ngadto sa panganod. Kini nga solusyon dali nga ipasabut: dili kinahanglan nga mabalaka bahin sa hardware, ang cluster dali nga ma-configure sa daghang lainlaing mga paagi ... ug labi ka hinungdanon, ang mga naglungtad nga teknolohiya (sama sa Kubernetes) nagpaposible sa yano nga pagsukod sa gahum sa pagkalkula depende sa karga. .

Ang pinansyal nga aspeto kanunay nga importante. Ang himan nga gihisgutan sa kini nga artikulo gidisenyo aron makatabang sa pagpakunhod sa mga badyet kung naggamit sa imprastraktura sa panganod sa Kubernetes.

Pasiuna

Kubecost maoy usa ka Californian startup gikan sa Google, nga nagmugna og solusyon sa pagkalkula sa mga gasto sa imprastraktura sa cloud services (sulod sa Kubernetes cluster + shared resources), pagpangita sa mga bottleneck sa cluster settings ug pagpadala sa angay nga notifications ngadto sa Slack.

Kami adunay mga kliyente nga adunay Kubernetes pareho sa pamilyar nga AWS ug GCP cloud, ug, labi ka panagsa alang sa komunidad sa Linux, Azure - sa kinatibuk-an, sa tanan nga mga platform nga gisuportahan sa Kubecost. Alang sa pipila kanila, among gikalkula ang mga gasto sa mga serbisyo sa intra-cluster sa among kaugalingon (gamit ang pamaagi nga parehas sa gigamit sa Kubecost), ug gimonitor usab ang mga gasto sa imprastraktura ug gisulayan nga ma-optimize kini. Busa, makatarunganon nga kami interesado sa posibilidad sa pag-automate sa maong mga buluhaton.

Ang source code sa nag-unang Kubecost module bukas ubos sa mga termino sa Open Source nga lisensya (Apache License 2.0). Mahimo kining gamiton nga gawasnon ug ang magamit nga mga bahin kinahanglan nga igo alang sa gagmay nga mga proyekto. Bisan pa, ang negosyo usa ka negosyo: ang nahabilin nga produkto sirado, mahimo kini gamiton sa bayad nga mga suskrisyon, nga nagpasabot usab sa komersyal nga suporta. Dugang pa, ang mga tagsulat nagtanyag usa ka libre nga lisensya alang sa gagmay nga mga pungpong (1 cluster nga adunay 10 nga mga node - sa panahon sa pagsulat niini nga artikulo, kini nga limitasyon gipalapad sa 20 nga mga node) o usa ka panahon sa pagsulay nga adunay bug-os nga kapabilidad sa 1 ka bulan.

Giunsa ang tanan molihok

Busa, ang nag-unang bahin sa Kubecost mao ang aplikasyon modelo sa gasto, gisulat sa Go. Usa ka Helm chart nga naghulagway sa tibuok sistema gitawag cost-analyzer ug sa kinauyokan niini mao ang usa ka asembliya gikan sa usa ka cost-model nga adunay Prometheus, Grafana ug daghang mga dashboard.

Sa kinatibuk-an, ang modelo sa gasto adunay kaugalingon nga web interface, nga nagpakita sa mga graph ug detalyado nga estadistika sa mga gasto sa porma sa tabular, ingon man, siyempre, mga tip sa pag-optimize sa mga gasto. Ang mga dashboard nga gipresentar sa Grafana usa ka sayo nga yugto sa pag-uswag sa Kubecost ug adunay daghang parehas nga datos sa modelo sa gasto, nga gidugangan kini sa naandan nga mga istatistika sa pagkonsumo sa CPU / memorya / network / disk space sa cluster ug mga sangkap niini. .

Giunsa pagtrabaho ang Kubecost?

  • Ang modelo sa gasto nakadawat og mga presyo alang sa mga serbisyo pinaagi sa API sa mga cloud provider.
  • Dugang pa, depende sa matang sa puthaw sa node ug sa rehiyon, ang gasto kada node kalkulado.
  • Pinasukad sa gasto sa pagpadagan sa mga node, ang matag dahon pod makakuha og gasto kada oras sa paggamit sa CPU, kada gigabyte sa memorya nga gigamit, ug kada oras kada gigabyte sa datos nga gitipigan - depende sa node nga gipadagan niini o sa klase sa storage.
  • Pinasukad sa gasto sa pag-operate sa mga indibidwal nga pod, ang bayad gikalkula para sa mga namespace, serbisyo, Deployment, StatefulSets.
  • Ang mga estadistika gikalkulo gamit ang metrics nga gihatag sa kube-state-metrics ug node-exporter.

Importante nga tagdon kana nga Kubecost sa default nag-ihap lang sa mga kapanguhaan nga anaa sa Kubernetes. Ang mga eksternal nga database, GitLab server, S3 storage ug uban pang serbisyo nga wala sa cluster (bisan kon nahimutang sa samang panganod) dili makita niini. Bisan kung para sa GCP ug AWS mahimo nimong idugang ang mga yawe sa imong mga account sa serbisyo ug dungan nga kuwentahon ang tanan.

Pag-instalar

Ang Kubecost nagkinahanglan:

  • Kubernetes nga bersyon 1.8 ug mas taas pa;
  • kube-state-metrics;
  • Prometheus;
  • node-eksporter.

Nahitabo kini nga sa among mga pungpong ang tanan nga kini nga mga kondisyon natagbo nang daan, mao nga kini igo na nga ipiho ang husto nga endpoint alang sa pag-access sa Prometheus. Bisan pa, ang opisyal nga kubecost Helm nga tsart naglangkob sa tanan nga kinahanglan nimo nga modagan sa usa ka hubo nga kumpol.

Adunay daghang mga paagi sa pag-install sa Kubecost:

  1. Standard nga pamaagi sa pag-instalar nga gihulagway sa mga instruksyon sa website sa developer. Gikinahanglan idugang ang cost-analyzer repository sa Helm, ug dayon i-install ang tsart. Ang nahabilin mao ang pagpasa sa imong pantalan ug pag-adjust sa mga setting sa gusto nga estado nga mano-mano (pinaagi sa kubectl) ug/o paggamit sa cost-model nga web interface.

    Wala pa gani namo gisulayan kini nga pamaagi, tungod kay wala kami naggamit sa mga third-party nga andam nga mga pag-configure, apan kini daw usa ka maayo nga "sulayi lang kini alang sa imong kaugalingon" nga kapilian. Kung na-install na nimo ang pipila ka mga sangkap sa sistema o gusto nimo ang labi ka maayo nga pag-tune, mas maayo nga ikonsiderar ang ikaduha nga agianan.

  2. Gamita sa esensya parehas nga tsart, apan i-configure ug i-install kini sa imong kaugalingon sa bisan unsang kombenyente nga paagi.

    Sama sa nahisgutan na, dugang pa sa kubecost mismo, kini nga tsart adunay mga tsart sa Grafana ug Prometheus, nga mahimo usab nga ipasibo kung gusto.

    Anaa sa tsart values.yaml para sa cost-analyzer nagtugot kanimo sa pag-configure:

    • usa ka lista sa mga component sa cost-analyzer nga kinahanglang i-deploy;
    • imong endpoint para sa Prometheus (kung aduna ka na);
    • mga domain ug uban pang mga setting sa pagsulod alang sa modelo sa gasto ug Grafana;
    • mga anotasyon para sa mga pod;
    • ang panginahanglan sa paggamit sa permanente nga storage ug ang gidak-on niini.

    Ang usa ka kompleto nga lista sa magamit nga mga kapilian sa pag-configure nga adunay mga paghulagway magamit sa dokumentasyon.

    Tungod kay ang kubecost sa batakang bersyon niini dili makapugong sa pag-access, kinahanglan nimo nga i-configure dayon ang basic-auth para sa web panel.

  3. Pag-instalar lamang ang kinauyokan sa sistema - modelo sa gasto. Aron mahimo kini, kinahanglan nimo nga i-install ang Prometheus sa cluster ug ipiho ang katumbas nga kantidad sa adres niini sa variable. prometheusEndpoint para sa Helm. Pagkahuman niana - pag-apply set sa YAML configurations sa cluster.

    Pag-usab, kinahanglan nimo nga mano-mano nga idugang ang Ingress nga adunay basic-auth. Sa katapusan, kinahanglan nimong idugang ang usa ka seksyon alang sa pagkolekta sa mga sukatan sa modelo sa gasto extraScrapeConfigs sa Prometheus config:

    - 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

Unsay atong makuha?

Uban sa bug-os nga pag-instalar, naa namo ang kubecost ug Grafana web panel nga adunay set sa mga dashboard.

Kinatibuk-ang gasto, nga gipakita sa main screen, aktuwal nga nagpakita sa gibanabana nga gasto sa mga kapanguhaan alang sa bulan. Kini giplanohan presyo nga nagpakita sa gasto sa paggamit sa cluster (matag bulan) sa kasamtangan nga lebel sa konsumo sa kapanguhaan.

Kini nga sukatan labi pa alang sa pag-analisar sa mga gasto ug pag-optimize niini. Dili kaayo kombenyente ang pagtan-aw sa kinatibuk-ang gasto alang sa abstract nga Hulyo sa kubecost: kinahanglan nimo adto sa billing. Apan makita nimo ang mga gasto nga gibuak pinaagi sa mga namespace, label, pod sulod sa 1/2/7/30/90 nga mga adlaw, nga ang billing dili gayud magpakita kanimo.

Pagrepaso sa Kubecost alang sa pagtipig og salapi sa Kubernetes sa mga panganod

Naghisgot bahin sa mga label. Kinahanglan ka nga moadto dayon sa mga setting ug itakda ang mga ngalan sa mga label nga gamiton ingon dugang nga mga kategorya alang sa mga gasto sa paggrupo:

Pagrepaso sa Kubecost alang sa pagtipig og salapi sa Kubernetes sa mga panganod

Mahimo nimong ibitay ang bisan unsang mga label sa kanila - kombenyente kung naa ka na sa imong kaugalingon nga sistema sa pag-label.

Ingon usab didto mahimo nimong usbon ang adres sa endpoint sa API diin nagkonektar ang modelo sa gasto, i-adjust ang gidak-on sa diskwento sa GCP ug itakda ang imong kaugalingon nga mga presyo alang sa mga kapanguhaan ug salapi alang sa ilang pagsukod (sa pila ka hinungdan ang bahin wala makaapekto sa Total nga gasto).

Ang Kubecost makapakita ug lainlain mga problema sa cluster (ug bisan alerto kung adunay peligro). Ikasubo, ang kapilian dili ma-configure, ug busa, kung adunay ka mga palibot alang sa mga nag-develop ug gamiton kini, kanunay nimong makita ang usa ka butang nga sama niini:

Pagrepaso sa Kubecost alang sa pagtipig og salapi sa Kubernetes sa mga panganod

Usa ka importante nga himan- Cluster Savings. Gisukod niini ang kalihokan sa mga pod (pagkonsumo sa mga kahinguhaan, lakip ang mga network), ug gikalkulo usab kung pila ang kuwarta ug kung unsa ang imong matipigan.

Morag klaro kaayo ang mga tip sa pag-optimize, apan ang kasinatian nagsugyot nga adunay pa nga tan-awon. Sa partikular, ang kalihokan sa network sa mga pods gibantayan (Gisugyot sa Kubecost ang paghatag pagtagad sa mga dili aktibo), ang gihangyo ug aktwal nga panumduman ug ang pagkonsumo sa CPU gitandi, ingon man ang CPU nga gigamit sa mga cluster node (nagsugyot sa paghugno sa daghang mga node ngadto sa usa), disk load ug duha ka dosena pa nga mga parameter.

Sama sa bisan unsang isyu sa pag-optimize, ang pag-optimize sa mga kapanguhaan base sa datos sa Kubecost nanginahanglan: pagtratar uban sa pag-amping. Pananglitan, ang Cluster Savings nagsugyot sa pagtangtang sa mga node, nga nag-angkon nga kini luwas, apan wala magtagad sa presensya sa mga node-selector ug mga hugaw sa mga pod nga gipakatap diha kanila nga dili magamit sa ubang mga node. Ug sa kinatibuk-an, bisan ang mga tagsulat sa produkto sa ilang bag-o nga artikulo (sa dalan, kini mahimong mapuslanon kaayo alang sa mga interesado sa hilisgutan sa proyekto) girekomenda nga dili magdali sa pag-optimize sa gasto, apan sa pagduol sa isyu nga mahunahunaon.

Mga resulta

Pagkahuman sa paggamit sa kubecost sulod sa usa ka bulan sa usa ka magtiayon nga mga proyekto, makahinapos kita nga kini usa ka makapaikag (ug dali usab mahibal-an ug i-install) nga himan alang sa pag-analisar ug pag-optimize sa mga gasto alang sa mga serbisyo sa mga cloud provider nga gigamit alang sa mga kumpol sa Kubernetes. Ang mga kalkulasyon nahimo nga tukma kaayo: sa among mga eksperimento sila nahiuyon sa kung unsa gyud ang gikinahanglan sa mga provider.

Adunay usab pipila ka mga kapakyasan: adunay mga dili kritikal nga mga bug, ug sa pipila ka mga lugar ang pagpaandar wala magsakup sa mga kinahanglanon nga piho sa pipila nga mga proyekto. Bisan pa, kung kinahanglan nimo nga dali nga masabtan kung diin moadto ang kuwarta ug kung unsa ang mahimo nga "maputol" aron kanunay nga makunhuran ang bayranan alang sa mga serbisyo sa panganod sa 5-30% (kini ang nahitabo sa among kaso), kini usa ka maayong kapilian. .

PS

Basaha usab sa among blog:

Source: www.habr.com

Idugang sa usa ka comment