Buludlarda Kubernetes-də pula qənaət etmək üçün Kubecost icmalı

Buludlarda Kubernetes-də pula qənaət etmək üçün Kubecost icmalı

Hazırda getdikcə daha çox şirkət öz infrastrukturunu hardware serverlərindən və öz virtual maşınlarından buludlara köçürür. Bu həlli izah etmək asandır: hardware haqqında narahat olmağa ehtiyac yoxdur, klaster çox müxtəlif üsullarla asanlıqla konfiqurasiya olunur... və ən əsası, mövcud texnologiyalar (Kubernetes kimi) yükdən asılı olaraq hesablama gücünü sadəcə miqyaslamağa imkan verir. .

Maliyyə aspekti həmişə vacibdir. Bu məqalədə müzakirə olunan alət Kubernetes ilə bulud infrastrukturundan istifadə edərkən büdcələri azaltmağa kömək etmək üçün nəzərdə tutulmuşdur.

Giriş

Kubecost bulud xidmətlərində (Kubernetes klasteri + paylaşılan resurslar daxilində) infrastruktur xərclərinin hesablanması, klaster parametrlərində darboğazların axtarışı və Slack-ə müvafiq bildirişlərin göndərilməsi üçün həll yolu yaradan Google-dan Kaliforniya startapıdır.

Kubernetes ilə həm tanış AWS və GCP buludlarında, həm də daha nadir hallarda Linux icması Azure üçün - ümumiyyətlə, Kubecost tərəfindən dəstəklənən bütün platformalarda müştərilərimiz var. Onlardan bəziləri üçün biz klasterdaxili xidmətlərin xərclərini özümüz hesablayırıq (Kubecost tərəfindən istifadə edilən metoda oxşar metoddan istifadə etməklə), həmçinin infrastruktur xərclərinə nəzarət edirik və onları optimallaşdırmağa çalışırıq. Ona görə də məntiqlidir ki, biz bu cür tapşırıqların avtomatlaşdırılmasının mümkünlüyü ilə maraqlandıq.

Əsas Kubecost modulunun mənbə kodu Açıq Mənbə lisenziyasının (Apache License 2.0) şərtlərinə əsasən açıqdır. Sərbəst şəkildə istifadə edilə bilər və mövcud xüsusiyyətlər kiçik layihələr üçün kifayət olmalıdır. Bununla belə, biznes biznesdir: məhsulun qalan hissəsi bağlıdır, istifadə edilə bilər ödənişli abunələr, bu da kommersiya dəstəyini nəzərdə tutur. Bundan əlavə, müəlliflər kiçik klasterlər üçün pulsuz lisenziya (1 qovşaqdan ibarət 10 klaster - bu məqalənin yazılması zamanı bu məhdudiyyət 20 qovşaq genişləndi) və ya 1 ay ərzində tam imkanlarla sınaq müddəti təklif edirlər.

Hər şey necə işləyir

Beləliklə, Kubecost-un əsas hissəsi tətbiqetmədir xərc modeli, Go ilə yazılmışdır. Bütün sistemi təsvir edən Helm diaqramı adlanır xərc-analizator və onun əsasını Prometey, Grafana və bir neçə tablosuna malik qiymətli modeldən olan montaj təşkil edir.

Ümumiyyətlə, xərc-model öz veb interfeysinə malikdir, burada qrafiklər və cədvəl şəklində xərclər haqqında ətraflı statistik məlumatlar, həmçinin, əlbəttə ki, xərclərin optimallaşdırılması üçün məsləhətlər göstərilir. Grafana-da təqdim olunan tablolar Kubecost-un inkişafının daha erkən mərhələsidir və klasterdə və onun komponentlərində CPU/yaddaş/şəbəkə/disk sahəsinin istehlakı ilə bağlı adi statistik məlumatlar ilə əlavə olaraq qiymət modeli ilə eyni məlumatları ehtiva edir. .

Kubecost necə işləyir?

  • Xərc modeli bulud provayderlərinin API vasitəsilə xidmətlərin qiymətlərini alır.
  • Bundan əlavə, düyünün dəmir növündən və bölgədən asılı olaraq, bir node üçün xərc hesablanır.
  • İşləyən qovşaqların dəyərinə əsasən, hər bir yarpaq podu işlədiyi qovşaqdan və ya saxlama sinifindən asılı olaraq CPU istifadəsinin bir saatı, istehlak edilmiş yaddaşın bir giqabaytı və saxlanılan məlumatın hər bir gigabaytı üçün bir qiymət alır.
  • Fərdi podların istismar dəyərinə əsasən ödəniş ad boşluqları, xidmətlər, Yerləşdirmələr, StatefulSets üçün hesablanır.
  • Statistikalar kube-state-metrics və node-exporter tərəfindən təmin edilən metriklərdən istifadə etməklə hesablanır.

Kubecost-u nəzərə almaq vacibdir defolt olaraq yalnız Kubernetes-də mövcud olan resursları hesablayır. Xarici verilənlər bazaları, GitLab serverləri, S3 anbarları və klasterdə olmayan digər xidmətlər (eyni buludda yerləşsə belə) ona görünmür. Baxmayaraq ki, GCP və AWS üçün xidmət hesablarınızın açarlarını əlavə edə və hər şeyi birlikdə hesablaya bilərsiniz.

Quraşdırma

Kubecost tələb edir:

  • Kubernetes versiyası 1.8 və daha yüksək;
  • kube-state-metrics;
  • Prometey;
  • node-ixracatçı.

Elə oldu ki, klasterlərimizdə bütün bu şərtlər əvvəlcədən yerinə yetirildi, ona görə də Prometeyə giriş üçün düzgün son nöqtəni təyin etmək kifayət olduğu ortaya çıxdı. Bununla belə, rəsmi kubecost Helm diaqramı çılpaq bir çoxluqda işləmək üçün lazım olan hər şeyi ehtiva edir.

Kubecost-u quraşdırmağın bir neçə yolu var:

  1. Standart quraşdırma üsulu ilə təsvir edilmişdir təlimatlar tərtibatçının saytında. Tələb olunur məsrəf analizatoru anbarını Helm-ə əlavə edin və sonra diaqramı quraşdırın. Qalan şey portunuzu yönləndirmək və parametrləri əl ilə (kubectl vasitəsilə) və/və ya qiymət modeli veb interfeysindən istifadə edərək istədiyiniz vəziyyətə tənzimləməkdir.

    Üçüncü tərəfin hazır konfiqurasiyalarından istifadə etmədiyimiz üçün bu üsulu sınamamışıq, amma yaxşı bir seçim kimi görünür "yalnız özünüz üçün cəhd edin". Əgər sistem komponentlərindən bəziləri artıq quraşdırılıbsa və ya daha dəqiq tənzimləmə istəyirsinizsə, ikinci yolu nəzərdən keçirmək daha yaxşıdır.

  2. Əsasən istifadə edin eyni qrafik, lakin onu özünüz konfiqurasiya edin və quraşdırın hər hansı bir rahat şəkildə.

    Artıq qeyd edildiyi kimi, kubecostun özündən əlavə, bu diaqramda Grafana və Prometheus diaqramları var, onları da istədiyiniz kimi fərdiləşdirmək olar.

    Diaqramda mövcuddur values.yaml xərc-analizatoru konfiqurasiya etməyə imkan verir:

    • tətbiq edilməli olan xərc-analizator komponentlərinin siyahısı;
    • Prometey üçün son nöqtəniz (əgər sizdə artıq varsa);
    • xərc modeli və Grafana üçün domenlər və digər giriş parametrləri;
    • podlar üçün qeydlər;
    • daimi anbardan istifadə ehtiyacı və onun ölçüsü.

    Təsvirləri ilə mövcud konfiqurasiya seçimlərinin tam siyahısı burada mövcuddur sənədləşdirmə.

    Əsas versiyasında kubecost girişi məhdudlaşdıra bilmədiyi üçün siz dərhal veb panel üçün əsas auth parametrini konfiqurasiya etməlisiniz.

  3. Quraşdırın yalnız sistemin nüvəsi - xərc modeli. Bunun üçün klasterdə Prometheus quraşdırılmalı və dəyişəndə ​​onun ünvanının müvafiq dəyərini göstərməlisiniz. prometheusEndpoint Helm üçün. Bundan sonra - müraciət edin YAML konfiqurasiyaları dəsti klasterdə.

    Yenə də əsas auth ilə Girişi əl ilə əlavə etməli olacaqsınız. Nəhayət, xərc modeli ölçülərini toplamaq üçün bir bölmə əlavə etməlisiniz extraScrapeConfigs Prometheus konfiqurasiyasında:

    - 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

Nə əldə edirik?

Tam quraşdırma ilə bizim ixtiyarımızda bir sıra tablosuna malik kubecost və Grafana veb paneli var.

Ümumi dəyəri, əsas ekranda göstərilir, əslində ay üçün resursların təxmini dəyərini göstərir. Bu proqnozlaşdırılır resurs istehlakının cari səviyyəsində klasterdən istifadə xərclərini (ayda) əks etdirən qiymət.

Bu metrik daha çox xərcləri təhlil etmək və onları optimallaşdırmaq üçündür. Kubecost-da mücərrəd iyulun ümumi xərclərinə baxmaq çox rahat deyil: etməli olacaqsınız fakturaya keçin. Lakin siz 1/2/7/30/90 gün üçün ad boşluqları, etiketlər, podlar üzrə bölünmüş xərcləri görə bilərsiniz, hansı ki, faktura heç vaxt göstərməyəcək.

Buludlarda Kubernetes-də pula qənaət etmək üçün Kubecost icmalı

haqqında danışarkən etiketlər. Dərhal parametrlərə keçməlisiniz və xərcləri qruplaşdırmaq üçün əlavə kateqoriyalar kimi istifadə ediləcək etiketlərin adlarını təyin etməlisiniz:

Buludlarda Kubernetes-də pula qənaət etmək üçün Kubecost icmalı

Onlara istənilən etiketi asa bilərsiniz - artıq öz etiketləmə sisteminizə sahibsinizsə rahatdır.

Həmçinin orada siz xərc modelinin qoşulduğu API son nöqtəsinin ünvanını dəyişə, GCP-də endirim ölçüsünü tənzimləyə və onların ölçülməsi üçün resurslar və valyuta üçün öz qiymətlərinizi təyin edə bilərsiniz (nədənsə bu xüsusiyyət Ümumi xərcə təsir etmir).

Kubecost müxtəlif göstərə bilər klasterdəki problemlər (və hətta təhlükə zamanı xəbərdar olun). Təəssüf ki, seçim konfiqurasiya edilə bilməz və buna görə də, tərtibatçılar üçün mühitiniz varsa və onlardan istifadə etsəniz, daim belə bir şey görəcəksiniz:

Buludlarda Kubernetes-də pula qənaət etmək üçün Kubecost icmalı

Əhəmiyyətli bir vasitə - Klaster qənaətləri. O, podların fəaliyyətini (şəbəkə daxil olmaqla resursların istehlakını) ölçür, həmçinin nə qədər pula və nəyə qənaət edə biləcəyinizi hesablayır.

Görünə bilər ki, optimallaşdırma məsləhətləri olduqca açıqdır, lakin təcrübə göstərir ki, hələ də baxmaq lazım olan bir şey var. Xüsusilə, podların şəbəkə fəaliyyəti izlənilir (Kubecost qeyri-aktiv olanlara diqqət yetirməyi təklif edir), tələb olunan və faktiki yaddaş və CPU istehlakı müqayisə edilir, həmçinin klaster qovşaqlarının istifadə etdiyi CPU (bir neçə qovşağın birinə çökməsini təklif edir), disk yük və daha bir neçə parametr.

İstənilən optimallaşdırma məsələsində olduğu kimi, Kubecost məlumatlarına əsaslanan resursların optimallaşdırılması tələb edir: ehtiyatla müalicə edin. Məsələn, Cluster Savings təhlükəsiz olduğunu iddia edərək qovşaqların silinməsini təklif edir, lakin onların üzərində yerləşdirilmiş podlarda digər qovşaqlarda mövcud olmayan node-selektorların və ləkələrin olmasını nəzərə almır. Və ümumiyyətlə, hətta məhsulun müəllifləri özlərində son məqalə (yeri gəlmişkən, layihənin mövzusu ilə maraqlananlar üçün çox faydalı ola bilər) xərclərin optimallaşdırılmasına tələsməmək, məsələyə düşünülmüş şəkildə yanaşmaq tövsiyə olunur.

Nəticələri

Bir neçə layihədə kubecost-dan bir ay istifadə etdikdən sonra belə nəticəyə gələ bilərik ki, bu, Kubernetes klasterləri üçün istifadə olunan bulud provayderlərinin xidmətlərinin xərclərini təhlil etmək və optimallaşdırmaq üçün maraqlı (həmçinin öyrənmək və quraşdırmaq asan) alətdir. Hesablamalar çox dəqiqdir: təcrübələrimizdə onlar provayderlərin həqiqətən tələb etdikləri ilə üst-üstə düşdü.

Bəzi mənfi cəhətlər də var: kritik olmayan səhvlər var və bəzi yerlərdə funksionallıq bəzi layihələrə xas olan ehtiyacları əhatə etmir. Bununla birlikdə, bulud xidmətləri üçün hesabı ardıcıl olaraq 5-30% azaltmaq üçün pulun hara getdiyini və nəyi "kəsmək" mümkün olduğunu tez başa düşməlisinizsə (bizim vəziyyətimizdə belə oldu), bu əla seçimdir. .

PS

Bloqumuzda da oxuyun:

Mənbə: www.habr.com

Добавить комментарий