Бұлттағы Kubernetes-те ақша үнемдеуге арналған Kubecost шолуы

Бұлттағы Kubernetes-те ақша үнемдеуге арналған Kubecost шолуы

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

Қаржылық аспекті әрқашан маңызды. Осы мақалада талқыланатын құрал Kubernetes көмегімен бұлттық инфрақұрылымды пайдалану кезінде бюджеттерді азайтуға көмектесу үшін жасалған.

Кіріспе

Кубекост — бұлт қызметтеріндегі инфрақұрылымдық шығындарды есептеу шешімін жасайтын (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 әзірлеуінің бұрынғы кезеңі болып табылады және оларды кластердегі процессор/жад/желі/диск кеңістігін тұтыну туралы әдеттегі статистикамен және оның құрамдас бөліктерімен толықтыратын шығын үлгісімен бірдей деректерден тұрады. .

Kubecost қалай жұмыс істейді?

  • Cost-model бұлт провайдерлерінің API арқылы қызметтер бағасын алады.
  • Әрі қарай түйіннің темір түріне және аймаққа байланысты бір түйіннің құны есептеледі.
  • Түйіндерді іске қосу құны негізінде әрбір жапырақ тақтасы жұмыс істеп тұрған түйінге немесе сақтау класына байланысты процессорды пайдаланудың сағатына, тұтынылатын жадтың бір гигабайтына және сақталған деректердің гигабайтына бір сағаттың құнын алады.
  • Жеке подкасттарды пайдалану құнына негізделген төлем аттар кеңістігі, қызметтер, Орналастырулар, StatefulSets үшін есептеледі.
  • Статистика kube-state-metrics және node-exporter ұсынған көрсеткіштер арқылы есептеледі.

Кубекостты ескеру маңызды әдепкі бойынша тек Kubernetes жүйесінде қолжетімді ресурстарды санайды. Сыртқы дерекқорлар, GitLab серверлері, S3 қоймалары және кластерде жоқ басқа қызметтер (тіпті бір бұлтта орналасқан болса да) оған көрінбейді. GCP және AWS үшін сіз қызмет тіркелгілерінің кілттерін қосып, барлығын бірге есептей аласыз.

параметр

Kubecost талап етеді:

  • Kubernetes нұсқасы 1.8 және одан жоғары;
  • kube-state-meterics;
  • Прометей;
  • түйінді экспорттаушы.

Біздің кластерлерімізде бұл шарттардың барлығы алдын ала орындалғандықтан, Прометейге қол жеткізу үшін дұрыс соңғы нүктені көрсету жеткілікті болды. Дегенмен, ресми kubecost Helm диаграммасы жалаң кластерде іске қосу үшін қажет нәрсенің барлығын қамтиды.

Kubecost орнатудың бірнеше жолы бар:

  1. Стандартты орнату әдісі сипатталған нұсқаулар әзірлеушінің веб-сайтында. Міндетті Helm-ге шығын талдаушысы репозиторийін қосыңыз, содан кейін диаграмманы орнатыңыз. Қалғанының бәрі портты бағыттау және параметрлерді қолмен (kuectl арқылы) және/немесе шығын үлгісіндегі веб-интерфейсті пайдаланып қажетті күйге келтіру.

    Біз бұл әдісті қолданып көрген де жоқпыз, өйткені біз үшінші тараптың дайын конфигурацияларын қолданбаймыз, бірақ бұл жақсы «өзіңіз көріңіз» опциясы сияқты. Жүйенің кейбір құрамдас бөліктері әлдеқашан орнатылған болса немесе дәлірек реттеу қажет болса, екінші жолды қарастырған дұрыс.

  2. Негізінде пайдаланыңыз бірдей диаграмма, бірақ оны өзіңіз конфигурациялаңыз және орнатыңыз кез келген ыңғайлы жолмен.

    Жоғарыда айтылғандай, kubecost-тың өзінен басқа, бұл диаграммада Grafana және Prometheus диаграммалары бар, оларды қалауыңызша теңшеуге болады.

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

    • орналастыруды қажет ететін шығындарды талдаушы компоненттерінің тізімі;
    • Прометейге арналған соңғы нүкте (егер сізде бұрыннан бар болса);
    • домендер және шығын үлгісі мен Grafana үшін басқа кіру параметрлері;
    • қосқыштарға арналған аннотациялар;
    • тұрақты сақтауды пайдалану қажеттілігі және оның көлемі.

    Сипаттамалары бар қол жетімді конфигурация опцияларының толық тізімі ішінде қол жетімді құжаттама.

    Оның негізгі нұсқасындағы kubecost қолжетімділікті шектей алмайтындықтан, веб-панель үшін негізгі аутентификацияны дереу конфигурациялау қажет болады.

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

    Қайтадан, сіз негізгі аутентификация арқылы кірісті қолмен қосуыңыз керек. Соңында, шығындар үлгісі көрсеткіштерін жинауға арналған бөлімді қосу керек 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 шолуы

Маңызды құрал - Кластер үнемдеу. Ол қосқыштардың белсенділігін өлшейді (ресурстарды, соның ішінде желілік ресурстарды тұтыну), сондай-ақ қанша ақшаны және нені үнемдеуге болатындығын есептейді.

Оңтайландыру бойынша кеңестер анық болып көрінуі мүмкін, бірақ тәжірибе әлі де қарастыратын нәрсе бар екенін көрсетеді. Атап айтқанда, түйіндердің желілік белсенділігі бақыланады (Kubecost белсенді еместерге назар аударуды ұсынады), сұралған және нақты жады мен CPU тұтынуы салыстырылады, сондай-ақ кластерлік түйіндер пайдаланатын CPU (бірнеше түйінді бір түйінге жинауды ұсынады), диск жүктеме және тағы бірнеше ондаған параметрлер.

Кез келген оңтайландыру мәселесі сияқты, Kubecost деректеріне негізделген ресурстарды оңтайландыру қажет: сақтықпен емдеңіз. Мысалы, Cluster Savings оның қауіпсіз екенін мәлімдей отырып, түйіндерді жоюды ұсынады, бірақ оларда орналастырылған түйіндердегі басқа түйіндерде қол жетімді емес түйін-таңдаушылар мен дақтардың болуын ескермейді. Және тұтастай алғанда, тіпті өнімнің авторлары олардың жақындағы мақала (айтпақшы, бұл жобаның тақырыбына қызығушылық танытқандар үшін өте пайдалы болуы мүмкін) шығындарды оңтайландыруға асықпай, мәселеге мұқият қарау ұсынылады.

Нәтижелері

Kubernetes кластерлері үшін пайдаланылатын бұлттық провайдерлердің қызметтеріне жұмсалатын шығындарды талдауға және оңтайландыруға арналған қызықты (сонымен қатар үйренуге және орнатуға оңай) құрал болып табылады деп қорытынды жасауға болады. Есептеулер өте дәл болды: біздің эксперименттерімізде олар провайдерлердің нақты талап еткенімен сәйкес келді.

Сондай-ақ кейбір кемшіліктер бар: маңызды емес қателер бар, ал кейбір жерлерде функционалдылық кейбір жобаларға тән қажеттіліктерді қамтымайды. Дегенмен, бұлтты қызметтерге арналған шотты 5-30%-ға тұрақты түрде азайту үшін ақшаның қайда кетіп жатқанын және нені «қиюға» болатынын тез түсіну қажет болса (біздің жағдайда солай болды), бұл тамаша нұсқа. .

PS

Біздің блогта да оқыңыз:

Ақпарат көзі: www.habr.com

пікір қалдыру