Nota do tradutor.: O engenheiro DevOps americano Sid Palas, utilizando como pano de fundo, fez uma comparação dos custos do serviço Managed Kubernetes (em diferentes configurações) dos principais provedores de nuvem do mundo. Um adicional positivo de seu trabalho foi a publicação de um Jupyter Notebook correspondente, permitindo (com conhecimentos mínimos em Python) ajustar os cálculos para atender às suas necessidades.
TL;DR: Azure e Digital Ocean não cobram pelo uso de recursos computacionais na camada de controle (control plane), o que os torna uma escolha adequada para implantar vários pequenos clusters. Para iniciar uma pequena quantidade de clusters grandes, o GKE é a melhor opção. Além disso, é possível reduzir significativamente os custos usando nós preemptivos/anunciados de baixo custo ou "assumindo" o uso contínuo dos mesmos nós (isso se aplica a todas as plataformas).

Tamanho do cluster (número de workers)
Visão geral
sobre a cobrança de 10 centavos por hora de cada cluster no GKE me motivou a analisar os preços das principais ofertas na área de Kubernetes gerenciado.

Esse anúncio desapontou bastante alguns...
Os protagonistas do artigo são:
- Google Kubernetes Engine (GCP) – ;
- Elastic Kubernetes Service (AWS) – ;
- Azure Kubernetes Service (Azure) – ;
- Kubernetes no Digital Ocean – .
Detalhamento de custos
Os custos totais de uso do Kubernetes em cada uma dessas plataformas são compostos pelos seguintes componentes:
- Cobra do gerenciamento do cluster;
- Balanceamento de carga (para Ingress);
- Recursos computacionais (vCPU e memória) dos workers;
- Tráfego de Egress;
- Armazenamento persistente;
- Processamento de dados pelo balanceador de carga.
Além disso, os provedores de nuvem oferecem descontos significativos se o cliente quiser/puder usar nós preemptivos, ou nós de baixa prioridade (low-priority) OU se comprometer a usar os mesmos nós por 1 a 3 anos.
É importante ressaltar que, embora o custo seja uma boa base para comparação e avaliação dos fornecedores de serviços, outros fatores também devem ser considerados:
- Uptime (Acordo de Nível de Serviço);
- O ecossistema de nuvem circundante;
- Versões disponíveis do K8s;
- Qualidade da documentação/ferramentas.
No entanto, esses fatores estão além do escopo deste artigo/pesquisa. Na Fatores não relacionados a preços para EKS, AKS e GKE são discutidos em detalhes.
Bloco de Notas Jupyter
Para facilitar a busca pela solução mais vantajosa, eu desenvolvi , utilizando plotly + ipywidgets. Ele permite comparar as ofertas dos provedores para diferentes tamanhos de cluster e conjuntos de serviços.
Você pode experimentar a versão ao vivo do bloco de notas em Binder:
Por favor, me avise se os cálculos ou as taxas de origem estiverem incorretos (isso pode ser feito através de uma issue ou pull request no GitHub — ).
Como resultado, obtemos um serviço de "monitoramento como serviço", automatizado na linha de produção de integração contínua. O desenvolvedor ou testador precisa apenas definir a lista de métricas em um arquivo JSON, e tudo o mais acontece automaticamente. Obtemos um controle de qualidade transparente dos lançamentos: todas as notificações sobre desempenho, consumo de recursos ou regressões arquitetônicas.
Infelizmente, há muitos detalhes para fornecer recomendações mais específicas além das incluídas no parágrafo TL;DR no início. No entanto, algumas conclusões podem ser feitas:
- Ao contrário do GKE e EKS, AKS e Digital Ocean não cobram pelos recursos da camada de gerenciamento. AKS e DO são mais vantajosos se a arquitetura inclui muitos pequenos clusters (por exemplo, um cluster para cada desenvolvedor ou cada cliente).
- Recursos computacionais um pouco menos caros do GKE tornam-no mais vantajoso à medida que o tamanho dos clusters aumenta*.
- O uso de nós desativáveis ou a vinculação a longo prazo a nós podem reduzir os custos em mais de 50%. Nota: a Digital Ocean não oferece esses descontos.
- A taxa de tráfego de saída no Google é mais alta, no entanto, o fator determinante no cálculo é o custo dos recursos computacionais (a menos que seu cluster seja uma fonte significativa de tráfego de saída).
- Escolher tipos de máquinas com base nas necessidades das cargas de trabalho em CPU e memória permitirá evitar custos desnecessários por recursos não utilizados.
- A Digital Ocean cobra menos por vCPU e mais por memória em comparação com outras plataformas — isso pode ser um fator decisivo para alguns tipos de cargas de trabalho computacionais.
* Nota: a análise utiliza dados para nós computacionais de uso geral (general-purpose). Estes são instâncias n1 do GCP Compute Engine, m5 do AWS ec2, máquinas virtuais D2v3 do Azure e droplets do DO com CPU dedicadas. Por sua vez, pesquisas podem ser conduzidas entre outros tipos de máquinas virtuais (burstable, entry-level). À primeira vista, o custo das máquinas virtuais depende linearmente do número de vCPU e da quantidade de memória, no entanto, não tenho certeza de que essa suposição se manterá válida para relações memória/CPU altamente não padronizadas.
No artigo , publicada em 2018, foi utilizado um cluster de referência com 100 núcleos vCPU e 400 GB de memória. Para comparação, de acordo com minhas estimativas, um cluster semelhante em cada uma dessas plataformas (para instâncias on-demand) custaria o seguinte:
- AKS: 51465 USD/ano
- EKS: 43138 USD/ano
- GKE: 30870 USD/ano
- DO: 36131 USD/ano
Espero que o artigo, juntamente com o caderno, ajudem você a avaliar as principais ofertas de Kubernetes gerenciado e/ou economizar em infraestrutura de nuvem, aproveitando descontos e outras oportunidades.
P.S. do tradutor
Confira também em nosso blog:
- «»;
- «»;
- «»;
- «».
Fonte: habr.com
