Przyp. tłum.: Amerykański inżynier DevOps Sid Palas, korzystając z , 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).

Rozmiar klastra (liczba workerów)
Ogólne informacje
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.

To ogłoszenie bardzo zasmuciło niektórych…
Głównymi bohaterami artykułu są:
- Google Kubernetes Engine (GCP) – ;
- Elastic Kubernetes Service (AWS) – ;
- Azure Kubernetes Service (Azure) – ;
- Kubernetes na Digital Ocean – .
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, 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 Szczegółowo omawiane są czynniki pozacenowe dla EKS, AKS i GKE.
Notatnik Jupyter
Aby uprościć wyszukiwanie najbardziej korzystnego rozwiązania, opracowałem , 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:
Daj mi znać, jeśli obliczenia lub początkowe ceny są niepoprawne (można to zrobić za pomocą issue lub pull requesta na GitHubie — ).
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 , 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
