Amazon EKS: Principais Recursos, Preços e Erros que Você Pode Evitar

17-02-2025 / Estratégias de Otimização de Custos / 9 min.

Escalar clusters Kubernetes pode ser um processo complexo, envolvendo múltiplos componentes como redes, armazenamento, worker nodes e control planes. Manter alto desempenho, baixa latência e throughput ideal ao escalar clusters Kubernetes exige configurações de rede eficientes, balanceamento de carga e alocação adequada de recursos.

Mais importante ainda, um escalonamento ineficiente pode levar à utilização subótima de recursos e a custos operacionais desnecessários.

É aqui que o Amazon Elastic Kubernetes Services (EKS) entra em cena — um serviço gerenciado da AWS que permite escalar clusters Kubernetes sem a necessidade de gerenciá-los diretamente.

Vamos aprofundar o tema para entender melhor o que é o EKS e como ele funciona.

O que é o Amazon EKS?

O Amazon Elastic Kubernetes Services (EKS) é um serviço gerenciado que permite aos usuários executar clusters Kubernetes na AWS sem precisar instalar ou manter seus próprios nós Kubernetes ou control planes. Com o EKS, a AWS gerencia integralmente o escalonamento, a implantação e as operações dos seus clusters Kubernetes, permitindo que você se concentre em tarefas mais importantes, como a execução das suas aplicações.

Em essência, você obtém todos os benefícios da infraestrutura AWS — como escalabilidade, confiabilidade e desempenho — com menor sobrecarga operacional. O serviço também pode ser integrado com serviços de rede e segurança da AWS, como Application Load Balancers (ALB) e AWS Identity and Access Management (IAM).

O EKS foi projetado para ser altamente seguro, escalável e disponível. Ele permite executar aplicações Kubernetes tanto no AWS EC2 quanto no AWS Fargate.

Vale destacar também que as aplicações em execução no Amazon EKS são compatíveis com aquelas executadas em ambientes Kubernetes padrão. É possível até mesmo migrar aplicações Kubernetes padrão para o Amazon EKS sem nenhuma alteração no código.

Como o EKS funciona?

O EKS é considerado a solução da AWS para Kubernetes como serviço, simplificando o gerenciamento de clusters Kubernetes na AWS.

Existem dois componentes principais no EKS:

  1. Master Nodes / Control PlaneO control plane inclui três master nodes Kubernetes em execução em diferentes zonas de disponibilidade. Todo o tráfego de entrada passa por um network load balancer até o control plane. É importante destacar que a AWS gerencia o control plane e ele não pode ser administrado pela sua organização.
  2. Worker Nodes / Data PlaneOs worker nodes são controlados e gerenciados pela sua organização e executam em instâncias AWS EC2 dentro da virtual private cloud (VPC).

Enquanto o control plane é responsável por gerenciar e monitorar onde e quando os contêineres são iniciados, os worker nodes executam os contêineres da sua organização e são responsáveis por rodar as aplicações.

Com o Amazon EKS, você pode:

  • Automatizar o escalonamento de instâncias do control plane Kubernetes com base na carga.
  • Detectar e substituir automaticamente instâncias do control plane com problemas.
  • Executar e escalar o control plane Kubernetes de forma transparente em diferentes zonas de disponibilidade.
  • Utilizar a arquitetura AWS para garantir alta disponibilidade.
  • Integrar com serviços de rede e segurança da AWS, como ALBs, IAM e Amazon VPC (que restringe o tráfego entre os componentes do control plane dentro de um único cluster, tornando o EKS altamente confiável).
  • Executar versões atualizadas do Kubernetes para acessar as ferramentas e complementos mais recentes.

Quais são os recursos do Amazon EKS?

Confira os principais recursos do Amazon EKS:

  • Kubernetes totalmente gerenciado: o EKS é Kubernetes como serviço. A AWS gerencia as operações, a implantação e o escalonamento dos clusters Kubernetes em seu nome, economizando tempo e reduzindo a carga operacional.
  • Alta escalabilidade e disponibilidade: o EKS executa instâncias do control plane em múltiplas zonas de disponibilidade, melhorando a disponibilidade e reduzindo o risco de indisponibilidade. Ele também permite escalar aplicações vertical ou horizontalmente.
  • Alta segurança: oferece recursos de segurança como integração com AWS Key Management, isolamento via VPC e funções IAM para contas de serviço do Kubernetes.
  • Facilidade de uso: mesmo que você não tenha experiência com Kubernetes, o EKS fornece uma interface simples para gerenciar e implantar aplicações Kubernetes.

Entendendo os preços do EKS e os fatores que os influenciam

Para cada cluster EKS criado, você paga $0,10 por hora. É possível utilizar um único cluster EKS para executar múltiplas aplicações Kubernetes aproveitando políticas de segurança IAM e namespaces.

Com o Amazon EKS, você tem a flexibilidade de executar e escalar aplicações Kubernetes tanto on-premises quanto na nuvem.

Os custos dependem de como você executa o Amazon EKS:

  • Amazon EC2: você paga pelos recursos AWS utilizados, como instâncias EC2 e volumes EBS. Não há compromissos iniciais nem taxas mínimas.
  • AWS Fargate: o preço é calculado com base nos recursos de vCPU e memória utilizados desde o momento em que a imagem do contêiner é baixada até o encerramento das instâncias EKS.
  • AWS Outposts: você paga $0,10 por hora por cluster, tanto para implantações locais quanto estendidas. A taxa do EKS é cobrada além do preço do Outposts.

Principais causas de gastos ineficientes no EKS

Recursos subutilizados ou superprovisionados

Um dos problemas de custo mais comuns no EKS é a subutilização e/ou superprovisionamento de recursos alocados aos nós EKS.

Ao criar um cluster não-Fargate, definimos o tipo de instância que será usado para hospedar os pods que contêm as imagens das nossas aplicações, conhecidas como contêineres.

Para quem não tem experiência, pode parecer uma boa ideia dar aos nós uma "margem de segurança" utilizando um tipo de instância com mais recursos do que o necessário. No entanto, isso inevitavelmente gerará gastos desnecessários sem nenhum benefício real: se a sua aplicação requer apenas uma determinada quantidade de recursos, qualquer excedente incorrerá em custos desnecessários.

Embora optar por tipos de instância menores possa parecer a solução, a economia obtida pode ser anulada pelo impacto no desempenho do cluster. A chave para executar workloads em contêineres com custo otimizado é encontrar o equilíbrio adequado.

Para evitar esse problema, existem várias medidas que você pode adotar:

  • Cluster Autoscaler ou Karpenter: são excelentes ferramentas para controlar o provisionamento de recursos. Ambas funcionam escalando os nós EKS para cima ou para baixo com base nos recursos disponíveis em um cluster. Se o kube-scheduler não conseguir iniciar um pod, ambas as ferramentas detectam essa situação e adicionam recursos ao cluster para aliviar a carga. Isso torna mais viável construir clusters com tipos de instância menores, pois essas ferramentas automatizam a criação de recursos adicionais quando os limites do cluster são atingidos.
  • Limits e Requests: Limits e requests também são um fator importante na otimização de custos. Ao definir um request na spec de um pod, você informa ao scheduler do Kubernetes quantos recursos específicos (CPU ou memória) o pod tem garantido. O scheduler usa essa informação para determinar em qual nó o pod deve ser alocado. Um limit, por outro lado, é a quantidade total de recursos que um pod pode consumir. Se um pod ultrapassar esse limite, ele pode ser removido, encerrado ou impedido de ser agendado. Limits e requests são uma excelente forma de garantir um orçamento previsível, melhorar o autoscaling do cluster e otimizar o desempenho das workloads.
  • Ferramentas de monitoramento: ferramentas como CloudWatch são úteis para obter visibilidade sobre a integridade do seu cluster. Você pode usar o Container Insights para coletar métricas e exibi-las no console do CloudWatch, onde é possível configurar alarmes baseados em utilização para ser notificado quando determinados limites forem ultrapassados.

Custos de transferência de dados e egress

Os custos de egress e transferência de dados são tópicos amplamente incompreendidos que impactam significativamente os custos operacionais. Esses custos estão associados à movimentação de dados para dentro e fora dos clusters EKS, para outros serviços AWS, para a internet ou entre regiões e zonas de disponibilidade da AWS.

  • Esteja ciente dos fatores que afetam esses custos: componentes adicionais como NAT Gateways, AWS PrivateLink e AWS Transit Gateway podem gerar cobranças adicionais dependendo do tipo de dado transferido.
  • Entender as implicações de servir tráfego externamente também é fundamental: um pod é exposto ao mundo externo por meio de um serviço do tipo LoadBalancer, ClusterIP ou NodePort. Configurações incorretas — como usar o tipo de serviço errado ou fazer com que o tráfego se comunique entre zonas de disponibilidade — podem ser um erro custoso. Certifique-se de entender como sua aplicação está configurada e os padrões de tráfego que ela seguirá.
  • Coloque no mesmo pod sempre que possível: como mencionado acima, a comunicação entre zonas de disponibilidade gera custos. Portanto, se você sabe que dois contêineres precisam se comunicar, avalie se é viável hospedá-los no mesmo pod, pois isso garante que a comunicação permaneça dentro da mesma zona de disponibilidade.

Custos de armazenamento persistente

O armazenamento persistente geralmente é obtido usando o Elastic Block Store (EBS). Dentro de um cluster EKS, esses volumes podem ser provisionados e anexados a nós EC2 do EKS para garantir que os dados persistam além do encerramento dos pods.

Embora o EBS ofereça durabilidade, escalabilidade e facilidade de uso, ele também pode ser um fator significativo de custos se não for gerenciado de forma eficaz.

Passos para controlar esses custos

Entenda quanto espaço você precisa e as gerações mais recentes de tipos de volume

Assim como o superprovisionamento de instâncias, os volumes EBS também podem ser superprovisionados com espaço em excesso ou recursos desnecessários.

Certifique-se de ter um entendimento sólido de quanto espaço você precisa, quais gerações mais recentes de tipos de volume estão disponíveis (por exemplo, gp2 vs. gp3) e se você realmente precisa definir IOPs.

O Kubernetes utiliza objetos chamados Storage Classes e Persistent Volumes para definir como volumes adicionais são criados. Familiarize-se com as opções e anotações disponíveis para otimizar a criação e o gerenciamento do seu armazenamento.

  • Implemente um procedimento de auditoria: quando recursos que utilizam volumes EBS são encerrados, os volumes associados às vezes não são excluídos — especialmente se os dados estiverem configurados para persistir. Certifique-se de ter um procedimento de auditoria para identificar quando isso ocorre e um plano para excluir esses volumes órfãos.
  • Use automação: se você utiliza snapshots para seus volumes EBS, use uma ferramenta como o Amazon Data Lifecycle Manager (DLM) para automatizar a criação e exclusão de snapshots EBS. Defina políticas que retenham apenas os snapshots mais recentes e excluam tudo além de uma determinada data.

Como a Frust pode ajudar você a reduzir seus custos com EKS

A Frust analisa continuamente o escalonamento das suas workloads EKS para garantir o melhor preço e estabilidade. Isso permite obter otimizações para suas Reserved Instances, Spot Instances e Savings Plans. Analisamos o uso da sua organização e os preços de mercado para garantir que você esteja sempre utilizando as melhores opções disponíveis para economizar na AWS.

Get started with Frust now

Still have questions? Check the frequently asked questions.

frust
un@frust.co🇨🇱 Callao 2911, of 4144, Santiago, RM, 7550285🇺🇸 1111B S Governors Ave STE 29963, Dover, DE 19904