Porównanie kosztów na Managed Kubernetes (2020)

Przyp. tłum.: Amerykański inżynier DevOps Sid Palas, korzystając z niedawnej zapowiedzi Google Cloud , przeprowadził porównanie kosztów usługi Managed Kubernetes (w różnych konfiguracjach) u wiodących światowych dostawców chmury. Dodatkowym atutem jego pracy była publikacja odpowiedniego Jupyter Notebooka, pozwalającego (przy minimalnej znajomości Pythona) dostosować wykonywane obliczenia do swoich potrzeb.

TL;DR: Azure i Digital Ocean nie pobierają opłat za zasoby obliczeniowe używane do warstwy sterującej (control plane), co czyni je odpowiednim wyborem do wdrażania wielu małych klastrów. Dla uruchamiania niewielkiej liczby dużych klastrów, najlepszym wyborem jest GKE. Ponadto można poważnie ograniczyć koszty, korzystając z węzłów spottowych/preemptible/niskopriorytetowych lub „zapisując się” na długotrwałe korzystanie z tych samych węzłów (dotyczy to wszystkich platform).

Porównanie kosztów na Managed Kubernetes (2020)
Rozmiar klastra (liczba workerów)

Ogólne informacje

Niedawne ogłoszenie Google Cloud o rozpoczęciu pobierania 10 centów za godzinę pracy każdego klastra w GKE zmotywowało mnie do przeprowadzenia analizy cen na główne oferty w obszarze zarządzanego (managed) Kubernetes.

Porównanie kosztów na Managed Kubernetes (2020)
To ogłoszenie bardzo zasmuciło niektórych…

Głównymi bohaterami artykułu są:

Rozbicie wydatków

Całkowite koszty korzystania z Kubernetes na każdej z tych platform składają się z następujących składników:

  • Opłata za zarządzanie klastrem;
  • Load balancing (dla Ingress);
  • Zasoby obliczeniowe (vCPU i pamięć) workerów;
  • Ruch egress;
  • Pamięć trwała;
  • Przetwarzanie danych przez load balancer.

Ponadto, dostawcy chmur oferują znaczne rabaty, jeśli klient chce/może korzystać z węzłów preemptible, spottowych lub niskopriorytetowych (low-priority) lub zobowiązuje się do używania tych samych węzłów przez 1-3 lata.

Warto podkreślić, że chociaż koszt jest dobrym podstawą do porównania i oceny dostawców usług, należy uwzględnić także inne czynniki:

  • Dostępność (Service Level Agreement);
  • Otaczający ekosystem chmury;
  • Dostępne wersje K8s;
  • Jakość dokumentacji/narzędzi.

Jednak te czynniki wykraczają poza zakres tego artykułu/badania. W lutowej notatce na blogu StackRox Szczegółowo omawiane są czynniki pozacenowe dla EKS, AKS i GKE.

Notatnik Jupyter

Aby uprościć wyszukiwanie najbardziej korzystnego rozwiązania, opracowałem notatnik Jupyter, wykorzystując plotly + ipywidgets. Umożliwia on porównanie ofert dostawców dla różnych rozmiarów klastrów i zestawów usług.

Można poćwiczyć na żywej wersji notatnika w Binder:

Porównanie kosztów na Managed Kubernetes (2020)
managed-kubernetes-price-exploration.ipynb na mybinder.org

Daj mi znać, jeśli obliczenia lub początkowe ceny są niepoprawne (można to zrobić za pomocą issue lub pull requesta na GitHubie — oto repozytorium).

Wnioski

Niestety, jest zbyt wiele szczegółów, aby przedstawić bardziej konkretne zalecenia, niż te zawarte w akapicie TL;DR na początku. Niemniej jednak można wyciągnąć pewne wnioski:

  • W przeciwieństwie do GKE i EKS, AKS i Digital Ocean nie pobierają opłat za zasoby warstwy zarządzającej. AKS i DO są korzystniejsze, jeśli architektura obejmuje wiele małych klastrów (na przykład po klastrze na każdego programistę lub każdego klienta).
  • Nieco tańsze zasoby obliczeniowe GKE czynią go bardziej opłacalnym w miarę zwiększania się rozmiarów klastrów*.
  • Użycie wirtualnych węzłów lub długoterminowe przypisanie do węzłów pozwala obniżyć koszty o ponad 50%. Uwaga: Digital Ocean nie oferuje takich zniżek.
  • Opłata za wychodzący ruch w Google jest wyższa, jednak decydującym czynnikiem w rachunkach jest koszt zasobów obliczeniowych (chyba że twój klaster generuje znaczną ilość wychodzących danych).
  • Wybór typów maszyn w zależności od potrzeb obciążenia w zakresie CPU i pamięci pozwoli uniknąć niepotrzebnych opłat za nieużywane zasoby.
  • Digital Ocean żąda mniej za vCPU i więcej za pamięć w porównaniu do innych platform — może to stanowić decydujący czynnik dla niektórych typów obciążeń obliczeniowych.

* Uwaga: w analizy wykorzystano dane dla ogólnych węzłów obliczeniowych (general-purpose). To przykłady n1 GCP Compute Engine, m5 AWS ec2, maszyny wirtualne D2v3 Azure i droplety DO z dedykowanymi CPU. Można również przeprowadzić badania wśród innych typów maszyn wirtualnych (burstable, entry-level). Na pierwszy rzut oka koszt maszyn wirtualnych zależy liniowo od liczby vCPU i rozmiaru pamięci, jednak nie jestem pewien, czy to założenie pozostanie prawdziwe dla mocno nietypowych proporcji pamięci/CPU.

W artykule Ostateczny przewodnik po kosztach Kubernetes: AWS vs GCP vs Azure vs Digital Ocean, opublikowanym w 2018 roku, wykorzystano wzorcowy klaster z 100 rdzeniami vCPU i 400 GB pamięci. Dla porównania, według moich obliczeń, podobny klaster na każdej z tych platform (dla instancji na żądanie) będzie kosztował następujące kwoty:

  • AKS: 51465 USD/rok
  • EKS: 43138 USD/rok
  • GKE: 30870 USD/rok
  • DO: 36131 USD/rok

Mam nadzieję, że artykuł razem z notatnikiem pomoże ocenić główne oferty zarządzanego Kubernetes i/lub zaoszczędzić na infrastrukturze chmurowej, korzystając z rabatów i innych możliwości.

P.S. od tłumacza

Przeczytaj także na naszym blogu:

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster