Entendendo a arquitetura do Karpenter para autoscaling no Kubernetes
Aprofundamento CEVIU
Aprofundamento
O Karpenter não é só um autoscaler mais rápido: é um novo paradigma de gerenciamento de infraestrutura em Kubernetes, baseado em reconciliação orientada a eventos e não em varreduras periódicas. Enquanto o Cluster Autoscaler opera sobre grupos de nós pré-configurados, com limites fixos, políticas rígidas de escalonamento e dependência de tags ou labels para identificar recursos, o Karpenter observa diretamente o estado dos pods pendentes, calcula a combinação ótima de CPU, memória, arquitetura (Graviton/x86) e requisitos de taints/tolerations, e então provisiona *um único nó* com o tipo de instância mais barato e adequado da nuvem, via API nativa (EC2, AKS VMSS, OCI Compute). Essa abordagem 'workload-driven' elimina a sobrecarga de manter múltiplos ASGs ou node pools manuais, reduzindo a complexidade operacional e o risco de subdimensionamento ou overprovisioning.
Sua arquitetura se sustenta em duas CRDs centrais: NodePool, que define regras de alto nível (zonas, taints, priorização de Spot), e NodeClass, que encapsula detalhes do provedor (AMI, perfis IAM, grupos de segurança). Isso separa claramente política de infraestrutura, permitindo que equipes de plataforma definam padrões organizacionais sem expor detalhes de nuvem aos times de aplicação. A versão v1.0.0 (ago/2024) estabilizou essas APIs, e a v1.5 (jul/2025) aprimorou a consolidação com estratégia 'emptiness-first', removendo nós ociosos com respeito estrito a PDBs, algo crítico em ambientes de produção com SLAs rigorosos.
Por que isso importa
Para engenheiros de plataformas, o Karpenter resolve três dores reais: tempo de resposta lento ao pico (o CA leva minutos; o Karpenter coloca um nó em ~45 segundos), desperdício de custos por instâncias subutilizadas (consolidação ativa reduziu em até 60% o uso de computação na Vorwerk), e dívida técnica acumulada em grupos de nós manualmente gerenciados. Sua adoção direta no EKS Auto Mode e a disponibilidade geral do provedor para OCI (abr/2026) mostram que ele deixou de ser uma opção experimental para se tornar parte da stack padrão em clusters multi-nuvem. Ferramentas como Cast AI para Karpenter (GA em mai/2026) indicam que o ecossistema já evoluiu para orquestrar o próprio autoscaler, com rebalanceamento contínuo, previsão de demanda e ajuste automático de NodePools, indo além do que o Karpenter faz nativamente.
Linha do tempo
Lançamento inicial do Karpenter v0.5 pela AWS
Graduação das APIs do Karpenter de alpha para beta
Lançamento da versão v1.0.0 com APIs estáveis
Lançamento da versão v1.5 com consolidação emptiness-first
Disponibilidade geral do provedor Karpenter para Oracle Cloud Infrastructure (OCI)
Lançamento em GA da solução Cast AI para Karpenter
Publicação do artigo CEVIU sobre arquitetura do Karpenter
Perguntas frequentes
Karpenter substitui o Cluster Autoscaler ou os dois podem coexistir?
Karpenter é uma alternativa completa ao Cluster Autoscaler, eles não são projetados para rodar juntos. O Karpenter assume o ciclo completo de provisionamento e desprovisionamento de nós, enquanto o CA depende de grupos de nós pré-existentes. Usá-los simultaneamente gera conflito de controle e comportamento imprevisível.
Como o Karpenter lida com interrupções de instâncias Spot?
Ele monitora eventos de interrupção via API do provedor (ex: EC2 Spot Instance Interruption Notices) e inicia o reagendamento de pods com antecedência de até dois minutos. Também pode ser configurado para substituir automaticamente nós Spot interrompidos por novos, mantendo a tolerância de falhas definida nos Pod Disruption Budgets.
É possível usar Karpenter em clusters on-premises ou apenas em nuvens públicas?
Atualmente, o Karpenter requer um provedor de nuvem com suporte oficial, AWS, Azure, GCP (em desenvolvimento ativo) e OCI (GA desde abr/2026). Não há suporte nativo para ambientes bare-metal ou vSphere, pois depende de APIs de provisionamento de máquinas virtuais ou instâncias que não existem nesses cenários.
Qual é o impacto da migração de Provisioners para NodePools (v1.1.0)?
A migração é obrigatória a partir da v1.1.0, pois as APIs v1beta1 foram removidas. Ela exige atualização das CRDs e ajustes nas definições de política, mas a ferramenta `karpenter-convert` automatiza boa parte do processo. O modelo de NodePool é mais expressivo e alinha-se melhor com práticas de GitOps, pois separa claramente regra de agendamento (NodePool) de detalhes de infraestrutura (NodeClass).
Fontes
- datadoghq.comfonte original
- Categoria
- CEVIU DevOps
- Publicado
- 16 de março de 2026
- Editoria
- CEVIU DevOps
