Булуттагы Kubernetes'те акча үнөмдөө үчүн Kubecost карап чыгуу

Булуттагы Kubernetes'те акча үнөмдөө үчүн Kubecost карап чыгуу

Учурда барган сайын көбүрөөк компаниялар инфраструктурасын аппараттык серверлерден жана өздөрүнүн виртуалдык машиналарынан булутка өткөрүп жатышат. Бул чечимди түшүндүрүү оңой: аппараттык камсыздоо жөнүндө кабатырлануунун кереги жок, кластер ар кандай жолдор менен оңой конфигурацияланган... жана эң негизгиси, учурдагы технологиялар (Кубернетес сыяктуу) жүктөмгө жараша эсептөө күчүн жөн эле масштабдатууга мүмкүндүк берет. .

Каржылык жагы ар дайым маанилүү. Бул макалада талкууланган курал Kubernetes менен булут инфраструктурасын колдонууда бюджетти кыскартууга жардам берүү үчүн иштелип чыккан.

тааныштыруу

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

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

Негизги Kubecost модулунун баштапкы коду Open Source лицензиясынын (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 өзүнөн тышкары, бул диаграммада Grafana жана Prometheus диаграммалары бар, аларды каалагандай ыңгайлаштырууга болот.

    Диаграммада жеткиликтүү values.yaml чыгым-анализатор үчүн конфигурациялоого мүмкүндүк берет:

    • жайгаштыруу керек болгон чыгымдарды талдоочу компоненттердин тизмеси;
    • Prometheus үчүн акыркы чекитиңиз (эгерде сизде мурунтан эле бар болсо);
    • домендер жана чыгымдар модели жана Grafana үчүн башка киргизүү орнотуулары;
    • поддондор үчүн аннотациялар;
    • туруктуу сактоону жана анын өлчөмүн колдонуу зарылдыгы.

    Сүрөттөмөлөрү менен жеткиликтүү конфигурация опцияларынын толук тизмеси ушул бөлүмдө бар документтер.

    Анын негизги версиясында kubecost кирүү мүмкүнчүлүгүн чектей албагандыктан, веб-панелдин негизги аутентификациясын дароо конфигурациялашыңыз керек болот.

  3. белгилөө системанын өзөгү гана - нарк модели. Бул үчүн, сизде Prometheus кластерде орнотулган жана өзгөрмөдө анын дарегинин тиешелүү маанисин көрсөтүшүңүз керек. prometheusEndpoint Helm үчүн. Андан кийин - колдонуу YAML конфигурацияларынын жыйындысы кластерде.

    Дагы, сиз кол менен Ingress'ти негизги аутентификация менен кошушуңуз керек болот. Акыр-аягы, сиз наркы моделдин көрсөткүчтөрүн чогултуу үчүн бөлүмдү кошуу керек болот 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 веб панели бар.

Жалпы баасы, негизги экранда көрсөтүлгөн, иш жүзүндө ай үчүн ресурстардын болжолдуу наркын көрсөтөт. Бул болжолдонгон ресурсту керектөөнүн учурдагы деңгээлинде кластерди (айына) колдонуунун наркын чагылдырган баа.

Бул көрсөткүч көбүрөөк чыгымдарды талдоо жана аларды оптималдаштыруу үчүн. Абстракттуу июль айынын жалпы чыгымдарын кубэкостто кароо абдан ыңгайлуу эмес: муну жасоого туура келет эсепке өтүү. Бирок сиз 1/2/7/30/90 күн үчүн аттар мейкиндиктери, энбелгилер, подколор боюнча бөлүнгөн чыгымдарды көрө аласыз, аларды эсеп коюу эч качан көрсөтпөйт.

Булуттагы Kubernetes'те акча үнөмдөө үчүн Kubecost карап чыгуу

жөнүндө сөз кылып жатып этикеткалар. Сиз дароо жөндөөлөргө өтүп, чыгымдарды топтоо үчүн кошумча категориялар катары колдонула турган энбелгилердин атын коюшуңуз керек:

Булуттагы Kubernetes'те акча үнөмдөө үчүн Kubecost карап чыгуу

Сиз аларга каалаган этикеткаларды илип койсоңуз болот - эгер сизде өзүңүздүн этикеткалоо тутумуңуз болсо, ыңгайлуу.

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

Kubecost ар кандай көрсөтө алат кластердеги көйгөйлөр (жана кооптуу учурда да эскертүү). Тилекке каршы, параметр конфигурацияланбайт, ошондуктан, эгерде сизде иштеп чыгуучулар үчүн чөйрөлөр болсо жана аларды колдонсоңуз, сиз дайыма ушул сыяктуу нерсени көрөсүз:

Булуттагы Kubernetes'те акча үнөмдөө үчүн Kubecost карап чыгуу

Маанилүү курал - Cluster Savings. Ал поддондордун активдүүлүгүн өлчөйт (ресурстарды, анын ичинде тармактык ресурстарды керектөө), ошондой эле канча акчаны жана эмнени үнөмдөөгө болорун эсептейт.

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

Ар кандай оптималдаштыруу маселеси сыяктуу эле, Kubecost маалыматтарынын негизинде ресурстарды оптималдаштыруу төмөнкүлөрдү талап кылат: этияттык менен мамиле кылуу. Мисалы, Cluster Savings коопсуз деп ырастап, түйүндөрдү жок кылууну сунуштайт, бирок башка түйүндөрдө жок түйүн-селекторлордун жана аларга орнотулган булганчтардын болушун эске албайт. Ал эми жалпысынан алганда, ал тургай, алардын ичинде буюмдун авторлору акыркы макала (Айтмакчы, бул долбоордун темасына кызыккандар үчүн абдан пайдалуу болушу мүмкүн) чыгымдарды оптималдаштырууга шашылбай, маселеге терең ойлонуу сунушталат.

натыйжалары

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

Кээ бир терс жактары да бар: критикалык эмес мүчүлүштүктөр бар, ал эми кээ бир жерлерде функционалдуулук кээ бир долбоорлорго тиешелүү муктаждыктарды камтыбайт. Бирок, булут кызматтары үчүн эсепти 5-30% га ырааттуу кыскартуу үчүн акча кайда кетип жатканын жана эмнени "кесүүгө" болорун тез түшүнүшүңүз керек болсо (биздин учурда ушундай болгон), бул эң сонун вариант. .

PS

Биздин блогдон дагы окуңуз:

Source: www.habr.com

Комментарий кошуу