Recenzja Kubecost dotycząca oszczędzania pieniędzy na Kubernetes w chmurach

Recenzja Kubecost dotycząca oszczędzania pieniędzy na Kubernetes w chmurach

Obecnie coraz więcej firm przenosi swoją infrastrukturę z serwerów sprzętowych i własnych maszyn wirtualnych do chmury. Rozwiązanie to łatwo wytłumaczyć: nie trzeba martwić się o sprzęt, klaster można łatwo skonfigurować na wiele różnych sposobów... a co najważniejsze, istniejące technologie (np. Kubernetes) pozwalają w prosty sposób skalować moc obliczeniową w zależności od obciążenia .

Aspekt finansowy jest zawsze ważny. Narzędzie omówione w tym artykule ma pomóc w zmniejszeniu budżetów podczas korzystania z infrastruktury chmurowej z Kubernetesem.

Wprowadzenie

Kubecost to kalifornijski start-up od Google, tworzący rozwiązanie do kalkulacji kosztów infrastruktury w usługach chmurowych (w ramach klastra Kubernetes + zasoby współdzielone), poszukujący wąskich gardeł w ustawieniach klastra i wysyłający odpowiednie powiadomienia do Slacka.

Mamy klientów z Kubernetesem zarówno w znanych nam chmurach AWS i GCP, jak i rzadziej dla społeczności Linuxowej Azure – ogólnie na wszystkich platformach obsługiwanych przez Kubecost. W przypadku części z nich sami kalkulujemy koszty usług wewnątrzklastrowych (metodą zbliżoną do tej stosowanej przez Kubecost), a także monitorujemy koszty infrastruktury i staramy się je optymalizować. Logiczne jest zatem, że interesowała nas możliwość automatyzacji takich zadań.

Kod źródłowy głównego modułu Kubecost jest otwarty na warunkach licencji Open Source (Apache License 2.0). Można z niego swobodnie korzystać, a dostępne funkcje powinny wystarczyć dla małych projektów. Jednak biznes is biznes: reszta produktu zamknięta, można z niego korzystać płatne subskrypcje, co oznacza również wsparcie komercyjne. Dodatkowo autorzy oferują bezpłatną licencję dla małych klastrów (1 klaster z 10 węzłami - w czasie pisania tego artykułu limit ten został rozszerzony do 20 węzłów) lub okres próbny z pełnymi możliwościami przez 1 miesiąc.

Jak wszystko działa

Zatem główną częścią Kubecostu jest aplikacja model kosztowy, napisane w Go. Nazywa się wykres Helma opisujący cały system analizator kosztów a jego podstawą jest złożenie modelu kosztowego z Prometheusem, Grafaną i kilkoma pulpitami nawigacyjnymi.

Ogólnie rzecz biorąc, model kosztowy ma własny interfejs sieciowy, który pokazuje wykresy i szczegółowe statystyki kosztów w formie tabelarycznej, a także oczywiście wskazówki dotyczące optymalizacji kosztów. Dashboardy prezentowane w Grafanie stanowią wcześniejszy etap rozwoju Kubecostu i zawierają w dużej mierze te same dane, co model kosztów, uzupełniając je zwykłymi statystykami dotyczącymi zużycia procesora/pamięci/sieci/miejsca na dysku w klastrze i jego komponentach .

Jak działa Kubecost?

  • Cost-model otrzymuje ceny za usługi poprzez API dostawców usług w chmurze.
  • Ponadto, w zależności od rodzaju żelaza węzła i regionu, obliczany jest koszt na węzeł.
  • Na podstawie kosztu działania węzłów każdy moduł liścia pobiera koszt za godzinę użycia procesora, za gigabajt zużytej pamięci i za godzinę za gigabajt przechowywanych danych – w zależności od węzła, na którym działał, lub klasy pamięci masowej.
  • Na podstawie kosztu obsługi poszczególnych podów obliczana jest płatność za przestrzenie nazw, usługi, wdrożenia i zestawy stanowe.
  • Statystyki są obliczane przy użyciu metryk dostarczonych przez kube-state-metrics i node-exporter.

Ważne jest, aby wziąć to pod uwagę Kubecost domyślnie zlicza tylko zasoby dostępne w Kubernetesie. Zewnętrzne bazy danych, serwery GitLab, magazyny S3 i inne usługi, których nie ma w klastrze (nawet jeśli znajdują się w tej samej chmurze) nie są dla niego widoczne. Chociaż w przypadku GCP i AWS możesz dodać klucze do swoich kont usług i obliczyć wszystko razem.

Instalacja

Kubecost wymaga:

  • Kubernetes w wersji 1.8 i wyższej;
  • metryki stanu kube;
  • Prometeusz;
  • eksporter węzłów.

Tak się złożyło, że w naszych klastrach wszystkie te warunki zostały z góry spełnione, więc okazało się, że wystarczyło podać poprawny punkt końcowy, aby uzyskać dostęp do Prometeusza. Jednak oficjalny wykres kubecost Helm zawiera wszystko, czego potrzebujesz do uruchomienia na gołym klastrze.

Istnieje kilka sposobów instalacji Kubecostu:

  1. Standardowy sposób instalacji opisany w instrukcje na stronie dewelopera.Wymagane dodaj repozytorium analizatora kosztów do Helm, a następnie zainstaluj wykres. Pozostaje tylko przekierować port i ręcznie dostosować ustawienia do żądanego stanu (poprzez kubectl) i/lub korzystając z interfejsu sieciowego modelu kosztowego.

    Nawet nie próbowaliśmy tej metody, ponieważ nie korzystamy z gotowych konfiguracji innych firm, ale wygląda na to, że jest to dobra opcja „po prostu wypróbuj sam”. Jeśli masz już zainstalowane niektóre komponenty systemu lub chcesz dokładniej je dostroić, lepiej rozważyć drugą ścieżkę.

  2. Używaj zasadniczo ten sam wykres, ale skonfiguruj i zainstaluj go samodzielnie w dowolny wygodny sposób.

    Jak już wspomniano, oprócz samego kubecostu, ten wykres zawiera wykresy Grafana i Prometheus, które można również dostosować według potrzeb.

    Dostępne na wykresie values.yaml dla analizatora kosztów pozwala skonfigurować:

    • lista komponentów analizatora kosztów, które należy wdrożyć;
    • Twój punkt końcowy dla Prometheusa (jeśli już go posiadasz);
    • domeny i inne ustawienia wejścia dla modelu kosztowego i Grafany;
    • adnotacje do podów;
    • konieczność korzystania z trwałego składowania i jego wielkość.

    Pełna lista dostępnych opcji konfiguracyjnych wraz z opisami dostępna jest w dokumentacja.

    Ponieważ kubecost w swojej podstawowej wersji nie może ograniczać dostępu, konieczne będzie natychmiastowe skonfigurowanie podstawowego uwierzytelniania dla panelu WWW.

  3. Zainstaluj tylko rdzeń systemu - model kosztowy. Aby to zrobić należy mieć zainstalowany Prometheus w klastrze i podać w zmiennej odpowiednią wartość jego adresu prometheusEndpoint dla Helma. Następnie - zastosuj zestaw konfiguracji YAML w klastrze.

    Ponownie będziesz musiał ręcznie dodać Ingress za pomocą podstawowego uwierzytelniania. Na koniec musisz dodać sekcję służącą do gromadzenia metryk modelu kosztowego extraScrapeConfigs w konfiguracji Prometheusa:

    - 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

Co otrzymujemy?

Przy pełnej instalacji mamy do dyspozycji panel webowy kubecost i Grafana wraz z zestawem dashboardów.

Całkowity koszt, wyświetlany na ekranie głównym, faktycznie pokazuje szacunkowy koszt zasobów na dany miesiąc. Ten możliwy do przewidzenia cena odzwierciedlająca koszt użytkowania klastra (w skali miesiąca) przy obecnym poziomie zużycia zasobów.

Ten wskaźnik służy raczej do analizy wydatków i ich optymalizacji. Patrzenie na całkowite koszty abstrakcyjnego lipca w kubecost nie jest zbyt wygodne: będziesz musiał przejdź do rozliczeń. Możesz jednak zobaczyć koszty podzielone według przestrzeni nazw, etykiet i podów za 1/2/7/30/90 dni, czego nigdy nie zobaczysz w rozliczeniach.

Recenzja Kubecost dotycząca oszczędzania pieniędzy na Kubernetes w chmurach

Mówiąc o etykiety. Należy od razu przejść do ustawień i ustawić nazwy etykiet, które będą służyć jako dodatkowe kategorie do grupowania kosztów:

Recenzja Kubecost dotycząca oszczędzania pieniędzy na Kubernetes w chmurach

Można na nich zawiesić dowolne etykiety – wygodne, jeśli posiadasz już własny system etykietowania.

Tam też możesz zmienić adres punktu końcowego API, z którym łączy się model kosztowy, dostosować wielkość rabatu w GCP oraz ustawić własne ceny zasobów i walutę ich pomiaru (z jakiegoś powodu funkcja ta nie wpływa na koszt całkowity).

Kubecost może pokazywać różne problemy w klastrze (a nawet ostrzegać w przypadku niebezpieczeństwa). Niestety opcji nie można konfigurować, dlatego jeśli posiadasz środowiska dla programistów i z nich korzystasz, cały czas będziesz widzieć coś takiego:

Recenzja Kubecost dotycząca oszczędzania pieniędzy na Kubernetes w chmurach

Ważne narzędzie – Oszczędności klastra. Mierzy aktywność podów (zużycie zasobów, w tym sieciowych), a także oblicza, ile pieniędzy i na czym możesz zaoszczędzić.

Może się wydawać, że wskazówki optymalizacyjne są dość oczywiste, jednak doświadczenie podpowiada, że ​​jest jeszcze na co zwrócić uwagę. W szczególności monitorowana jest aktywność sieciowa podów (Kubecost sugeruje zwrócenie uwagi na nieaktywne), porównywane jest żądane i rzeczywiste zużycie pamięci i procesora, a także procesor wykorzystywany przez węzły klastra (sugeruje zwinięcie kilku węzłów w jeden), dysk obciążenie i kilkadziesiąt innych parametrów.

Jak w przypadku każdego problemu optymalizacji, optymalizacja zasobów w oparciu o dane Kubecost wymaga: traktować ostrożnie. Na przykład Cluster Savings sugeruje usuwanie węzłów, twierdząc, że jest to bezpieczne, ale nie bierze pod uwagę obecności selektorów węzłów i skażeń w wdrożonych na nich podach, które nie są dostępne w innych węzłach. I ogólnie nawet autorzy produktu w swoim ostatni artykuł (swoją drogą może to być bardzo przydatne dla osób zainteresowanych tematyką projektu) zaleca się nie spieszyć się z optymalizacją kosztów, ale podejść do problemu z rozwagą.

Wyniki

Po miesięcznym korzystaniu z kubecost w kilku projektach możemy stwierdzić, że jest to ciekawe (a przy tym łatwe do nauczenia i instalacji) narzędzie do analizy i optymalizacji kosztów usług dostawców chmurowych wykorzystywanych dla klastrów Kubernetes. Obliczenia okazują się bardzo dokładne: w naszych eksperymentach pokrywały się z rzeczywistymi wymaganiami dostawców.

Istnieją również pewne wady: występują błędy niekrytyczne, a w niektórych miejscach funkcjonalność nie pokrywa potrzeb specyficznych dla niektórych projektów. Jeśli jednak chcesz szybko zorientować się, na co idą pieniądze i co można „obciąć”, aby konsekwentnie obniżać rachunek za usługi chmurowe o 5-30% (tak właśnie stało się w naszym przypadku), jest to świetna opcja .

PS

Przeczytaj także na naszym blogu:

Źródło: www.habr.com

Dodaj komentarz