preloader
  • Início
  • Calculadora de Recursos Kubernetes para Dimensionamento de Clusters

Use esta calculadora interativa para determinar o tamanho ideal de máquinas virtuais para seu cluster Kubernetes com base nos requests e limits dos seus deployments

blog-thumb

📖 Tempo estimado de leitura: 7 min


Calculadora de Requests para Clusters Kubernetes

Um dos desafios mais comuns ao configurar clusters Kubernetes é dimensionar corretamente os recursos necessários para os nós que compõem o cluster. Quantas vCPUs e quanta RAM você realmente precisa para seus workloads? Se você solicitar muitos recursos, estará desperdiçando dinheiro; se solicitar poucos, enfrentará problemas de desempenho ou até mesmo falhas.

Esses requests impactam diretamente o agendador do Kubernetes e influenciam no dimensionamento dos nós, caso sejam máquinas virtuais locais ou instâncias em nuvem.

Para ajudar nesse processo de dimensionamento, desenvolvi uma calculadora interativa que você pode usar para estimar com precisão os requisitos de CPU e memória com base nos seus deployments planejados.

Calculadora de Recursos Kubernetes

Básico
Avançado

Resultados:

CPU Total Necessário: 0 cores
Memória Total Necessária: 0 Mi
VM Recomendada: -
Ver cálculos detalhados

Para entender melhor como esses parâmetros afetam o consumo real de recursos e o planejamento da infraestrutura, desenvolvemos uma calculadora interativa de requests. Ela ajuda a estimar quantos recursos um cluster precisa, com base nas definições dos seus deployments, facilitando a projeção da carga e a escolha do tamanho ideal das instâncias de computação.


Por que é importante calcular recursos com precisão?

O Kubernetes é uma plataforma poderosa para orquestração de contêineres que utiliza dois conceitos fundamentais para gerenciar recursos de computação:

Requests: A quantidade mínima de recursos que o Kubernetes garante para um pod
Limits: O valor máximo de recursos que um pod pode consumir

Quando um pod é criado, o scheduler do Kubernetes procura um nó que tenha recursos suficientes disponíveis para satisfazer os requests do pod. Se os nós no seu cluster não tiverem recursos suficientes, os pods ficarão pendentes.


O custo do subdimensionamento

Um cluster subdimensionado pode causar:

− Pods em estado pendente
− Desempenho degradado de aplicações
− Evictions (despejos) frequentes de pods
− Reinicializações de contêineres por OOMKilled (Out of Memory Killed)


O custo do superdimensionamento

Um cluster superdimensionado pode levar a:

− Desperdício significativo de recursos
− Custos desnecessários de infraestrutura
− Baixa eficiência de utilização de recursos
− ROI reduzido nos seus investimentos em Kubernetes


Como usar a calculadora

A calculadora oferece dois modos de operação:


Modo Básico

O modo básico é perfeito para cálculos rápidos e inclui:

− Número total de pods
− CPU request por pod
− Memória request por pod

Com apenas esses três valores, você obtém uma estimativa inicial dos recursos necessários para sua VM.


Modo Avançado

Para um dimensionamento mais preciso, o modo avançado permite especificar:

− CPU e memória (tanto requests quanto limits)
− Buffer adicional para crescimento
− Tipo de nó (standard ou alta disponibilidade)
− Fator de utilização personalizado


Como interpretar os resultados

A calculadora fornece três métricas principais:

CPU Total Necessário: Soma dos requests de CPU multiplicado pelo número de pods, com ajustes para utilização do sistema
Memória Total Necessária: Soma dos requests de memória, convertida em unidades apropriadas (Mi/Gi)
VM Recomendada: Tamanho sugerido de máquina virtual que comportaria seus workloads

Além disso, você pode ver cálculos detalhados clicando em “Ver cálculos detalhados”, o que mostra exatamente como os números foram derivados.


Fatores considerados pela calculadora


Utilização máxima recomendada

A calculadora considera que você não deve planejar para utilizar 100% dos recursos disponíveis em uma VM. Isso porque:

− O próprio Kubernetes consome recursos
− O sistema operacional e serviços de base precisam de recursos
− Reservar margem é crucial para picos de carga inesperados

Por padrão, a calculadora usa um limite de utilização de 80% para nós standard e 70% para nós de alta disponibilidade.


Buffer adicional

No modo avançado, você pode definir um buffer adicional para acomodar:

− Crescimento futuro da carga de trabalho
− Variações inesperadas no uso de recursos
− Requisitos de escalonamento horizontal (HPA)

Um buffer de 20% é uma escolha conservadora para a maioria dos ambientes.


Boas práticas para definir requests e limits


Definindo requests

CPU: Comece medindo o uso base da sua aplicação e adicione um buffer de 20-30%
Memória: Baseie-se no uso médio mais um buffer de 30-40% (a memória tende a variar mais que a CPU)


Definindo limits

CPU: Normalmente 1.5x a 2x o valor do request
Memória: No máximo 1.5x o valor do request (para evitar OOMKilled)


Exemplo prático

Para uma aplicação web típica:

 
resources:
  requests:
    cpu: 0.5
    memory: 256Mi
  limits:
    cpu: 1.0
    memory: 384Mi
     

Considerações especiais para diferentes workloads


Aplicações stateless

− Podem ter um buffer menor
− Foco na proporção requests/limits para maximizar densidade


Aplicações stateful

− Precisam de buffer maior para evitar interrupções
− Devem considerar cargas de pico de I/O


Bancos de dados

− Requisitos de memória geralmente mais críticos que CPU
− Considere adicionar pelo menos 50% de buffer para memória


Monitoramento e ajuste

Lembre-se que os valores calculados são apenas o ponto de partida. Uma vez que seu cluster esteja em execução:

⒈ Monitore o uso real de recursos
⒉ Compare com as alocações
⒊ Ajuste os requests e limits conforme necessário
⒋ Recalcule o tamanho ideal dos nós


Por que os pods ficam em estado “Pending” quando você escala demais?

Ao utilizar o Kubernetes, é comum que, ao escalar rapidamente o número de pods (por exemplo, criando 50 pods com um request de CPU de 500 millicores) alguns deles fiquem presos no estado Pending. Isso geralmente acontece quando os nós do cluster não possuem recursos suficientes disponíveis para atender aos requests de todos os pods.


Exemplo prático

Suponha que cada pod solicite:

 
resources:
  requests:
    cpu: 500m
     

Se você tentar criar 50 pods com esse request, o total de CPU requisitada será:

50 pods × 500m = 25.000m (ou 25 vCPU)

Agora imagine que cada nó worker do cluster possui apenas 8 vCPU disponíveis. O scheduler do Kubernetes tentará encontrar nós com CPU suficiente para cada pod. Como nenhum nó tem capacidade para receber todos esses pods simultaneamente, apenas alguns serão agendados. O restante ficará em estado Pending até que recursos suficientes estejam disponíveis.


Como o Kubernetes decide onde colocar os pods?

O scheduler do Kubernetes verifica os recursos disponíveis em cada nó e compara com os requests definidos para cada pod. Se não houver nenhum nó com recursos suficientes, o pod não será agendado.

Recursos considerados pelo scheduler:

CPU e memória solicitadas (requests)
− Restrições de afinidade ou anti-afinidade
− Restrições de tolerations e taints
− Recursos disponíveis no momento do agendamento


Como evitar esse problema?

Algumas boas práticas:

Dimensione corretamente seus nós: Use ferramentas como o calculador de requests para prever o uso total de CPU e memória.
Evite requests exagerados: Meça o consumo real da aplicação e ajuste os requests conforme necessário.
Implemente HPA (Horizontal Pod Autoscaler): Para aumentar o número de réplicas com base em uso real, e não de forma estática.
Use múltiplos node pools: Com nós de diferentes tamanhos ou perfis para workloads variados.
Considere a utilização de Cluster Autoscaler: Que adiciona nós dinamicamente conforme a necessidade de agendamento de pods.


Diagnóstico

Você pode identificar rapidamente quais pods estão em Pending com:

 
kubectl get pods --all-namespaces --field-selector=status.phase=Pending
 

Para ver os motivos exatos de um pod estar pendente:

 
kubectl describe pod <nome-do-pod>
 

Isso mostrará mensagens como:

0/3 nodes are available: 3 Insufficient cpu.

Com essas informações, você pode ajustar a configuração do cluster ou dos pods para garantir um agendamento mais eficiente e evitar gargalos na orquestração.


Conclusão

Dimensionar corretamente os recursos para clusters Kubernetes é uma mistura de ciência e arte. Esta calculadora fornece um ponto de partida sólido, mas o monitoramento contínuo e os ajustes são essenciais para otimizar o equilíbrio entre desempenho e custo.

Experimente diferentes cenários, compare os resultados e use estas informações para tomar decisões mais informadas sobre o tamanho das VMs para seu próximo cluster Kubernetes.


Recursos adicionais

Documentação oficial do Kubernetes sobre gerenciamento de recursos
Boas práticas para requests e limits
Vertical Pod Autoscaler - Uma ferramenta complementar para ajustar automaticamente requests



Compartilhe este post e continue acompanhando nosso site para mais novidades sobre Kubernetes e tecnologias open-source!

Dê uma olhada nestes outros artigos interessantes! 🔥



Apoie nosso trabalho 💖

Gostou do que encontrou aqui? A cada clique em um banner, você ajuda a manter este site vivo e gratuito. Seu apoio faz toda a diferença para que possamos continuar trazendo conteúdos que você adora. Muito obrigado! 😊


Artigos que você pode gostar 📌
comments powered by Disqus