Үүлэн дэх Кубернетес дээр мөнгө хэмнэж буй Kubecost тойм

Үүлэн дэх Кубернетес дээр мөнгө хэмнэж буй Kubecost тойм

Одоогийн байдлаар улам олон компаниуд дэд бүтцээ техник хангамжийн серверүүд болон өөрсдийн виртуал машинуудаас үүлэн рүү шилжүүлж байна. Энэ шийдлийг тайлбарлахад хялбар: техник хангамжийн талаар санаа зовох шаардлагагүй, кластер нь янз бүрийн аргаар хялбархан тохируулагддаг ... хамгийн чухал нь одоо байгаа технологиуд (Kubernetes гэх мэт) ачааллаас хамааран тооцоолох хүчийг энгийнээр масштаблах боломжтой болгодог. .

Санхүүгийн тал нь үргэлж чухал байдаг. Энэ нийтлэлд авч үзсэн хэрэгсэл нь Kubernetes-тэй үүлэн дэд бүтцийг ашиглах үед төсвийг багасгахад туслах зорилготой юм.

Танилцуулга

Кубекост нь Google-ийн Калифорнийн стартап бөгөөд үүлэн үйлчилгээний дэд бүтцийн зардлыг тооцоолох шийдлийг бий болгодог (Kubernetes кластер + хуваалцсан нөөцүүд дотор), кластерын тохиргоон дахь саад бэрхшээлийг хайж, Slack-д зохих мэдэгдлийг илгээдэг.

Бидэнд Kubernetes-тэй үйлчлүүлэгчид танил AWS болон GCP үүлэн дээр, мөн Linux нийгэмлэгийн хувьд илүү ховор Azure - ерөнхийдөө Kubecost-ын дэмждэг бүх платформ дээр байдаг. Тэдгээрийн заримын хувьд бид кластер доторх үйлчилгээний зардлыг өөрсдөө тооцдог (Kubecost-ын ашигладагтай төстэй аргыг ашиглан), мөн дэд бүтцийн зардлыг хянаж, оновчтой болгохыг хичээдэг. Тиймээс бид ийм ажлыг автоматжуулах боломжийг сонирхож байсан нь логик юм.

Kubecost-ийн үндсэн модулийн эх код нь Нээлттэй эхийн лицензийн нөхцлийн дагуу нээлттэй байна (Apache License 2.0). Үүнийг чөлөөтэй ашиглах боломжтой бөгөөд боломжит боломжууд нь жижиг төслүүдэд хангалттай байх ёстой. Гэсэн хэдий ч бизнес бол бизнес юм: бүтээгдэхүүний үлдсэн хэсэг нь хаалттай, үүнийг ашиглаж болно төлбөртэй захиалга, энэ нь мөн арилжааны дэмжлэг гэсэн үг юм. Нэмж дурдахад зохиогчид жижиг кластеруудад үнэ төлбөргүй лиценз (1 зангилаатай 10 кластер - энэ нийтлэлийг бичих явцад энэ хязгаар 20 зангилаа болж өргөжсөн) эсвэл 1 сарын турш бүрэн хүчин чадалтай туршилтын хугацааг санал болгодог.

Бүх зүйл хэрхэн ажилладаг

Тиймээс Kubecost-ийн гол хэсэг нь програм юм зардлын загвар, Go дээр бичигдсэн. Системийг бүхэлд нь дүрсэлсэн Helm диаграммыг нэрлэнэ зардал анализатор Үүний гол цөм нь Prometheus, Grafana болон хэд хэдэн хяналтын самбар бүхий зардлын загварын угсралт юм.

Ерөнхийдөө зардлын загвар нь өөрийн вэб интерфэйстэй бөгөөд энэ нь зардлын график, нарийвчилсан статистик мэдээллийг хүснэгт хэлбэрээр харуулдаг бөгөөд мэдээжийн хэрэг зардлыг оновчтой болгох зөвлөмжийг өгдөг. Grafana-д танилцуулсан хяналтын самбарууд нь Kubecost-ийн хөгжлийн эхний үе шат бөгөөд зардлын загвартай ижил өгөгдлүүдийн ихэнхийг агуулсан бөгөөд тэдгээрийг кластер дахь CPU/санах ой/сүлжээ/дискний зайны хэрэглээний талаарх ердийн статистик мэдээллээр нөхөж өгдөг. бүрэлдэхүүн хэсгүүд.

Kubecost хэрхэн ажилладаг вэ?

  • Зардлын загвар нь үүлэн үйлчилгээ үзүүлэгчдийн API-ээр дамжуулан үйлчилгээний үнийг хүлээн авдаг.
  • Цаашилбал, зангилаа болон бүс нутгийн төмрийн төрлөөс хамааран нэг зангилааны зардлыг тооцдог.
  • Зангилааны ашиглалтын зардалд үндэслэн төгсгөлийн хэсэг бүр нь ажиллаж байсан зангилаа эсвэл хадгалах ангийн ангиллаас хамааран CPU-ийн ашиглалтын нэг цаг, санах ойд зарцуулсан гигабайт, хадгалсан нэг гигабайт өгөгдлийн нэг цагийн зардлыг авдаг.
  • Хувь хүний ​​​​подыг ажиллуулах зардалд үндэслэн нэрийн орон зай, үйлчилгээ, Байрлуулалт, StatefulSets-ийн төлбөрийг тооцдог.
  • Статистикийг kube-state-metrics болон node-exporter-аас өгсөн хэмжигдэхүүнийг ашиглан тооцдог.

Kubecost гэдгийг анхаарч үзэх нь чухал юм анхдагчаар зөвхөн Kubernetes-д байгаа нөөцүүдийг тооцдог. Гадаад мэдээллийн сан, GitLab серверүүд, S3 хадгалалтууд болон кластерт байхгүй бусад үйлчилгээнүүд (нэг үүлэн дотор байрладаг байсан ч) түүнд харагдахгүй. Хэдийгээр GCP болон AWS-ийн хувьд та үйлчилгээний дансныхаа түлхүүрүүдийг нэмж, бүгдийг хамтад нь тооцоолж болно.

тохиргоо

Kubecost нь дараахь зүйлийг шаарддаг.

  • Kubernetes хувилбар 1.8 ба түүнээс дээш;
  • kube-state-meterics;
  • Прометей;
  • зангилаа экспортлогч.

Манай кластеруудад эдгээр бүх нөхцлийг урьдчилан хангасан тул Прометей рүү нэвтрэх зөв төгсгөлийн цэгийг зааж өгөхөд л хангалттай байсан. Гэсэн хэдий ч албан ёсны kubecost Helm диаграм нь нүцгэн кластер дээр ажиллахад шаардлагатай бүх зүйлийг агуулдаг.

Kubecost-ийг суулгах хэд хэдэн арга байдаг:

  1. Стандарт суулгах аргыг доор тайлбарласан болно зааварчилгаа хөгжүүлэгчийн вэбсайт дээр. Шаардлагатай Helm-д зардал анализаторын агуулахыг нэмж, дараа нь диаграммыг суулгана уу. Үлдсэн зүйл бол портоо дамжуулж, тохиргоог хүссэн төлөвт гараар (kubectl-ээр) болон/эсвэл зардлын загварын вэб интерфэйсийг ашиглан тохируулах явдал юм.

    Бид гуравдагч этгээдийн бэлэн тохиргоог ашигладаггүй тул энэ аргыг туршиж үзээгүй ч "өөрийгөө туршиж үзээрэй" гэсэн сайн сонголт шиг харагдаж байна. Хэрэв та системийн зарим бүрэлдэхүүн хэсгүүдийг аль хэдийн суулгасан эсвэл илүү нарийн тохируулахыг хүсч байвал хоёр дахь замыг авч үзэх нь дээр.

  2. Үндсэндээ ашигла ижил график, гэхдээ өөрөө тохируулж суулгаарай ямар ч тохиромжтой аргаар.

    Өмнө дурьдсанчлан, kubecost-ээс гадна энэ диаграм нь Графана, Прометей диаграммуудыг агуулдаг бөгөөд үүнийг хүссэнээр өөрчилж болно.

    График дээр боломжтой values.yaml зардал анализаторын хувьд дараах тохиргоог хийх боломжтой.

    • байршуулах шаардлагатай зардлын анализаторын бүрэлдэхүүн хэсгүүдийн жагсаалт;
    • Prometheus-ийн эцсийн цэг (хэрэв танд байгаа бол);
    • зардлын загвар болон Графанагийн домэйн болон бусад нэвтрэх тохиргоо;
    • хонхорхойд зориулсан тэмдэглэгээ;
    • байнгын хадгалалт ашиглах хэрэгцээ, түүний хэмжээ.

    Тодорхойлолт бүхий боломжтой тохиргооны сонголтуудын бүрэн жагсаалтыг эндээс авах боломжтой баримт бичиг.

    Үндсэн хувилбартаа kubecost нь хандалтыг хязгаарлаж чадахгүй тул та вэб самбарын үндсэн баталгаажуулалтыг нэн даруй тохируулах шаардлагатай болно.

  3. Суулгах зөвхөн системийн цөм - зардлын загвар. Үүнийг хийхийн тулд та Prometheus-ийг кластерт суулгаж, хувьсагчийн хаягийн харгалзах утгыг зааж өгөх ёстой. prometheusEndpoint Helm-д зориулсан. Үүний дараа - өргөдөл гаргах YAML тохиргооны багц кластерт.

    Дахин хэлэхэд та Ingress-г үндсэн-auth-тай гараар нэмэх хэрэгтэй болно. Эцэст нь та зардлын загварын хэмжүүрүүдийг цуглуулах хэсгийг нэмэх хэрэгтэй болно extraScrapeConfigs 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

Бид юу авах вэ?

Бүрэн суулгацтай бол бид хэд хэдэн хяналтын самбар бүхий kubecost болон Grafana вэб самбарыг ашиглах боломжтой.

Нийт зардал, үндсэн дэлгэц дээр гарч байгаа нь үнэндээ тухайн сарын нөөцийн тооцоолсон зардлыг харуулдаг. Энэ төлөвлөсөн нөөцийн хэрэглээний өнөөгийн түвшинд кластерыг ашиглах зардлыг (сард) тусгасан үнэ.

Энэ хэмжигдэхүүн нь зардлыг шинжлэх, оновчтой болгоход илүү тохиромжтой. Кубэкост дахь хийсвэр XNUMX-р сарын нийт зардлыг харах нь тийм ч тохиромжтой биш юм: та хийх хэрэгтэй болно тооцоо руу очих. Гэхдээ та төлбөр тооцоонд хэзээ ч харуулахгүй 1/2/7/30/90 хоногийн зардлуудыг нэрийн орон зай, шошго, pods-аар хувааж харах боломжтой.

Үүлэн дэх Кубернетес дээр мөнгө хэмнэж буй Kubecost тойм

-ийн тухай ярьж байна шошго. Та нэн даруй тохиргоо руу орж, зардлыг бүлэглэх нэмэлт ангилал болгон ашиглах шошгоны нэрийг тохируулах хэрэгтэй.

Үүлэн дэх Кубернетес дээр мөнгө хэмнэж буй Kubecost тойм

Та тэдгээрийн дээр дурын шошго өлгөх боломжтой - хэрэв та өөрийн гэсэн шошгоны системтэй бол тохиромжтой.

Мөн тэнд та зардлын загвар холбогдсон API төгсгөлийн цэгийн хаягийг өөрчилж, GCP дахь хөнгөлөлтийн хэмжээг тохируулж, тэдгээрийг хэмжих нөөц, валютын өөрийн үнийг тохируулах боломжтой (ямар нэг шалтгааны улмаас энэ функц нь Нийт өртөгт нөлөөлөхгүй).

Kubecost нь янз бүрийн зүйлийг харуулж чадна кластер дахь асуудлууд (тэр ч байтугай аюулын үед сэрэмжлүүлэх). Харамсалтай нь энэ сонголтыг тохируулах боломжгүй тул хэрэв танд хөгжүүлэгчдэд зориулсан орчин байгаа бөгөөд тэдгээрийг ашигладаг бол та иймэрхүү зүйлийг байнга харах болно.

Үүлэн дэх Кубернетес дээр мөнгө хэмнэж буй Kubecost тойм

Чухал хэрэгсэл - Кластерын хадгаламж. Энэ нь хонхорцогуудын үйл ажиллагааг (нөөцийн хэрэглээ, сүлжээний нөөцийг оруулаад) хэмжиж, хэр их мөнгө, юунд хэмнэж болохыг тооцдог.

Оновчлолын зөвлөмжүүд нь тодорхой юм шиг санагдаж болох ч туршлагаас харахад анхаарах зүйл байсаар байна. Тодруулбал, хонхорцогуудын сүлжээний үйл ажиллагааг хянадаг (Kubecost нь идэвхгүйд анхаарлаа хандуулахыг санал болгож байна), хүссэн болон бодит санах ой, CPU-ийн хэрэглээг харьцуулж, кластер зангилааны ашигладаг CPU (хэд хэдэн зангилааг нэг болгон задлахыг санал болгож байна), диск ачаалал болон өөр хэдэн арван параметрүүд.

Аливаа оновчлолын асуудлын нэгэн адил Kubecost өгөгдөл дээр үндэслэн нөөцийг оновчтой болгохын тулд дараахь зүйлийг шаарддаг. болгоомжтой хандах. Жишээлбэл, Cluster Savings нь зангилааг устгахыг санал болгож байгаа бөгөөд үүнийг аюулгүй гэж үзэж байгаа боловч тэдгээр дээр байрлуулсан хонгилд бусад зангилаанууд дээр байхгүй зангилаа сонгогч болон бохирдол байгаа эсэхийг харгалздаггүй. Тэгээд ерөнхийдөө, тэр ч байтугай бүтээгдэхүүний зохиогчид нь тэдний саяхны нийтлэл (Дашрамд хэлэхэд, энэ нь төслийн сэдвийг сонирхож буй хүмүүст маш их хэрэгтэй байж магадгүй юм) зардлыг оновчтой болгох гэж яарах хэрэггүй, харин асуудалд нухацтай хандахыг зөвлөж байна.

Үр дүн

Сарын турш kubecost-ийг хэд хэдэн төсөл дээр ашигласны дараа энэ нь Kubernetes кластерт ашигладаг үүлэн үйлчилгээ үзүүлэгчдийн үйлчилгээний зардлыг шинжлэх, оновчтой болгох сонирхолтой (мөн сурах, суулгахад хялбар) хэрэгсэл юм гэж дүгнэж болно. Тооцоолол нь маш үнэн зөв болж хувирав: бидний туршилтаар тэд үйлчилгээ үзүүлэгчдийн яг шаардлагатай зүйлтэй давхцсан.

Сул талууд бас бий: чухал биш алдаанууд байдаг бөгөөд зарим газруудад үйл ажиллагаа нь зарим төслүүдийн хэрэгцээг хангахгүй байна. Гэсэн хэдий ч, хэрэв та үүлэн үйлчилгээний төлбөрийг 5-30% -иар тогтмол бууруулахын тулд мөнгө хаашаа орж байгааг, юуг "тасах" боломжтойг хурдан ойлгох шаардлагатай бол (манай тохиолдолд ийм зүйл тохиолдсон) энэ нь маш сайн сонголт юм. .

PS

Мөн манай блог дээрээс уншина уу:

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх