Nota di traduzione.: L'ingegnere DevOps americano Sid Palas, approfittando , ha condotto un confronto dei costi del servizio Managed Kubernetes (in diverse configurazioni) dei principali fornitori di cloud del mondo. Un ulteriore vantaggio del suo lavoro è stata la pubblicazione di un Jupyter Notebook corrispondente, che consente (con alcune conoscenze minime di Python) di modificare i calcoli in base alle proprie esigenze.
TL;DR: Azure e Digital Ocean non addebitano costi per le risorse computazionali utilizzate per il piano di controllo (control plane), il che li rende una scelta adatta per il deploy di molti piccoli cluster. Per eseguire un numero ridotto di cluster di grandi dimensioni, GKE è la scelta migliore. Inoltre, è possibile ridurre significativamente i costi utilizzando nodi spot/preemption/low-priority o

Dimensione del cluster (numero di worker)
Panoramica
di iniziare a addebitare 10 centesimi all'ora per il funzionamento di ciascun cluster in GKE mi ha spinto ad analizzare i prezzi delle principali offerte nel campo di Kubernetes gestito.

Questo annuncio ha molto deluso alcuni...
I protagonisti dell'articolo sono:
- Google Kubernetes Engine (GCP) – ;
- Elastic Kubernetes Service (AWS) – ;
- Azure Kubernetes Service (Azure) – ;
- Kubernetes su Digital Ocean – .
Ripartizione dei costi
I costi complessivi per l'utilizzo di Kubernetes su ciascuna di queste piattaforme sono composti dai seguenti elementi:
- Commissione per la gestione del cluster;
- Bilanciamento del carico (per Ingress);
- Risorse computazionali (vCPU e memoria) dei worker;
- Traffico in uscita;
- Memoria permanente;
- Elaborazione dei dati da parte del bilanciatore di carico.
Inoltre, i fornitori di cloud offrono riduzioni significative se un cliente desidera/può utilizzare nodi preemptible, o nodi a bassa priorità (low-priority) OBBLIGANDOSI a utilizzare gli stessi nodi per 1-3 anni.
È importante sottolineare che, sebbene il costo sia una buona base per confrontare e valutare i fornitori del servizio, è necessario considerare anche altri fattori:
- Uptime (Service Level Agreement);
- L'ecosistema cloud circostante;
- Versioni disponibili di K8s;
- Qualità della documentazione/strumentazione.
Tuttavia, questi fattori esulano dallo scopo di questo articolo/ studio. Nella si analizzano i fattori non di prezzo per EKS, AKS e GKE.
Taccuino Jupyter
Per semplificare la ricerca della soluzione più vantaggiosa, ho sviluppato , utilizzando plotly + ipywidgets. Esso consente di confrontare le offerte dei fornitori per diverse dimensioni di cluster e set di servizi.
Puoi esercitarti con la versione live del taccuino su Binder:
Fammi sapere se i calcoli o le tariffe originali sono errati (puoi farlo tramite issue o pull request su GitHub — ).
Conclusioni
Purtroppo, ci sono troppe sfumature per fornire raccomandazioni più specifiche rispetto a quelle incluse nel paragrafo TL;DR all'inizio. Tuttavia, alcune conclusioni possono essere tratte:
- A differenza di GKE e EKS, AKS e Digital Ocean non addebitano costi per le risorse dello strato di gestione. AKS e DO sono più vantaggiosi se l'architettura include numerosi piccoli cluster (ad esempio, un cluster per ogni sviluppatore o ogni cliente).
- Le risorse di calcolo leggermente meno costose di GKE rendono questa opzione più vantaggiosa all'aumentare della dimensione dei cluster*.
- L'uso di nodi preemptible o il legame a lungo termine con i nodi possono ridurre i costi di oltre il 50%. Nota: Digital Ocean non offre tali sconti.
- Il costo del traffico in uscita in Google è più alto, tuttavia, il fattore determinante nel calcolo è il costo delle risorse di calcolo (a meno che il tuo cluster non sia una fonte significativa di dati in uscita).
- La scelta dei tipi di macchine in base alle esigenze delle workload in CPU e memoria permetterà di evitare costi aggiuntivi per risorse non utilizzate.
- Digital Ocean addebita meno per vCPU e di più per la memoria rispetto ad altre piattaforme — questo potrebbe diventare un fattore decisivo per alcuni tipi di workload.
* Nota: nell'analisi sono utilizzati dati per nodi di calcolo di tipo general-purpose (general-purpose). Si tratta di istanze n1 GCP Compute Engine, m5 AWS ec2, macchine virtuali D2v3 Azure e droplet DO con CPU dedicate. A sua volta, è possibile condurre anche ricerche tra altri tipi di macchine virtuali (burstable, entry-level). A prima vista, il costo delle macchine virtuali dipende linearmente dal numero di vCPU e dalla quantità di memoria, tuttavia non sono sicuro che questa assunzione rimarrà valida per rapporti memoria/CPU altamente non standard.
Nell'articolo , pubblicato nel 2018, è stato utilizzato un cluster standard con 100 core vCPU e 400 GB di memoria. A titolo di confronto, secondo i miei calcoli, un cluster simile su ciascuna di queste piattaforme (per le istanze on-demand) costerà la seguente somma:
- AKS: 51465 USD/anno
- EKS: 43138 USD/anno
- GKE: 30870 USD/anno
- DO: 36131 USD/anno
Spero che l'articolo insieme al notebook ti aiuti a valutare le principali offerte di Kubernetes gestito e/o a risparmiare sull'infrastruttura cloud, sfruttando sconti e altre opportunità.
P.S. dal traduttore
Leggi anche nel nostro blog:
- «»;
- «»;
- «»;
- «».
Fonte: habr.com
