PerfectScalePerfectScale

PerfectScale

Karpenter na AWS: o guia completo de autoscaling de nós no EKS

Esta página também está disponível em English, Deutsch, Español, Français, Italiano e 日本語.

Tania Duggal
By Tania Duggal
Oct 15, 202615 min read

O que é o Karpenter?

Karpenter é um autoscaler de clusters Kubernetes open-source, flexível e de alto desempenho criado pela AWS. Ele melhora a disponibilidade das aplicações e a eficiência do cluster ao provisionar rapidamente recursos de computação do tamanho certo em resposta às mudanças de demanda dos workloads.

Diferentemente dos autoscalers tradicionais, que dependem de grupos de nós predefinidos ou de planejamento estático de capacidade, o Karpenter provisiona e encerra nós dinamicamente com base nos requisitos em tempo real dos seus workloads. Essa abordagem permite que os clusters escalem rapidamente quando a demanda dispara e reduzam a capacidade com a mesma eficiência quando os recursos não são mais necessários.

Principais benefícios:

  • Escalonamento rápido: Provisiona nós de computação em segundos, não em minutos, reduzindo drasticamente a latência de agendamento dos pods.
  • Otimização de custos: Analisa automaticamente os preços entre famílias de instâncias e escolhe entre capacidade On-Demand e Spot para reduzir os custos de computação. Savings Plans e Instâncias Reservadas se aplicam automaticamente na camada de faturamento da AWS, independentemente de quais instâncias o Karpenter provisionar.
  • Sem grupos de nós: Elimina a sobrecarga operacional de gerenciar Auto Scaling Groups (ASGs) rígidos e predefinidos ou grupos de nós gerenciados.
  • Flexibilidade dinâmica de instâncias: Avalia de forma integrada centenas de tipos de instância diferentes da AWS para encontrar a configuração de computação mais eficiente para o seu cluster.

Por que usar o Karpenter na AWS?

Escalonamento rápido

O Karpenter permite que clusters Kubernetes respondam a mudanças na demanda mais rápido que autoscalers tradicionais. Quando novos pods são agendados e os nós existentes não têm recursos para hospedá-los, o Karpenter provisiona novas instâncias EC2 sob medida para os requisitos do workload. Isso reduz o tempo de espera dos pods pendentes e diminui a latência da aplicação. Essa velocidade de escalonamento é valiosa para workloads com padrões de tráfego imprevisíveis ou variáveis, em que a lentidão para escalar pode degradar o serviço.

Como isso funciona: A vantagem de velocidade vem da interação direta do Karpenter com as APIs da AWS e da capacidade de contornar as limitações dos grupos de nós. Em vez de esperar por políticas de escalonamento ou ajustes incrementais, o Karpenter provisiona o que é necessário quando é necessário.

Otimização de custos

O Karpenter melhora a eficiência de custos ao tomar decisões sobre os tipos e tamanhos de instância que provisiona. Em vez de usar um conjunto limitado de tipos de nó predefinidos, ele avalia as opções de instâncias EC2 disponíveis, incluindo instâncias Spot e sob demanda, para encontrar a combinação mais econômica para o workload. Essa seleção dinâmica reduz o superprovisionamento e ajuda as equipes a evitar pagar por capacidade ociosa.

Como isso funciona: O Karpenter pode usar os modelos de precificação da AWS. Com suporte a instâncias Spot, ele permite que os clusters se beneficiem de custos de computação reduzidos quando os workloads toleram interrupções.

Sem grupos de nós

O Karpenter elimina a necessidade de gerenciar grupos de nós, que são obrigatórios para autoscalers tradicionais do Kubernetes. Grupos de nós exigem configuração e manutenção manuais, incluindo limites de escalonamento, tipos de instância e estratégias de atualização. Com o Karpenter, você define requisitos de alto nível, e ele provisiona e encerra nós em resposta às necessidades dos workloads. Isso reduz a sobrecarga operacional, especialmente em ambientes grandes ou complexos.

Por que isso é útil: Sem as restrições dos grupos de nós, o Karpenter permite um escalonamento mais granular. Ele pode combinar diferentes tipos e tamanhos de instância conforme necessário, atendendo a uma variedade maior de workloads e otimizando desempenho e custo.

Flexibilidade dinâmica de instâncias

O Karpenter pode selecionar entre toda a gama de tipos de instância EC2 no momento do provisionamento, em vez de ficar limitado aos tipos especificados nos grupos de nós. Ele se adapta a mudanças no inventário da AWS, nos preços e nos requisitos dos workloads. Se determinados tipos de instância ficarem indisponíveis ou menos econômicos, o Karpenter escolhe outra opção.

Por que isso é útil: Essa flexibilidade beneficia workloads com requisitos de recursos diversos ou variáveis. Por exemplo, jobs de processamento de dados podem precisar de nós com muita memória em um dia e de nós com muita CPU no dia seguinte. O Karpenter pode provisionar o tipo de instância adequado para cada cenário, reduzindo desperdício e melhorando o desempenho do cluster.

Como o Karpenter funciona com o Amazon EKS

Diagrama de como o Karpenter provisiona nós: pods pendentes que não cabem em nenhum nó são identificados pelo controlador do Karpenter, que usa as regras do NodePool e as configurações da AWS do EC2NodeClass para provisionar instâncias EC2 onde os pods são então agendados

O Karpenter se integra ao Amazon Elastic Kubernetes Service (EKS) para provisionar nós para workloads Kubernetes na AWS:

  1. Ele roda como um controlador dentro do cluster EKS e monitora pods não agendáveis. Quando o Kubernetes não consegue alocar um pod por falta de capacidade de computação, o Karpenter avalia as solicitações de recursos do pod e provisiona instâncias EC2 que atendam a esses requisitos.
  2. A integração com o EKS funciona em conjunto com o scheduler do Kubernetes. O Kubernetes primeiro tenta agendar os pods nos nós existentes. Se não houver capacidade adequada, o Karpenter detecta os pods pendentes e provisiona novos worker nodes.
  3. Assim que as novas instâncias estão prontas e registradas no cluster, os pods são agendados e iniciados.
  4. O Karpenter usa as APIs da AWS para descobrir e provisionar instâncias EC2. Em vez de depender de grupos de autoscaling fixos, ele seleciona entre os tipos de instância disponíveis com base em restrições definidas pelos administradores. Essas restrições podem incluir arquitetura de CPU, família de instância, zona de disponibilidade, tipo de capacidade ou preferências de preço.

Em ambientes Amazon EKS, o Karpenter trabalha com dois recursos personalizados: NodePool e EC2NodeClass:

  • Um NodePool define requisitos de agendamento e escalonamento, como tipos de instância, taints, limites e políticas de interrupção.
  • Um EC2NodeClass define configurações de infraestrutura específicas da AWS, incluindo AMIs, roles do IAM, sub-redes e grupos de segurança.

Juntos, esses recursos separam o comportamento de agendamento do Kubernetes da configuração de infraestrutura da AWS.

Como o Karpenter se integra à AWS, ele pode usar instâncias Spot, múltiplas zonas de disponibilidade e tipos de instância baseados em Graviton. Isso permite que clusters EKS usem um mix de recursos de computação mais amplo e econômico.

Casos de uso comuns do Karpenter na AWS

1. Autoscaling de microsserviços no EKS

O Karpenter é indicado para o autoscaling de microsserviços implantados no Amazon EKS. Microsserviços costumam ter padrões de carga variáveis e exigem escalonamento rápido. O Karpenter provisiona instâncias EC2 para acomodar novos pods quando a demanda aumenta e encerra nós desnecessários quando o tráfego diminui. Isso garante que os microsserviços recebam os recursos de que precisam sem ajustes manuais ou superprovisionamento.

2. Workloads em lote e baseados em filas

Workloads em lote e baseados em filas geralmente exigem picos de computação por períodos curtos, seguidos de ociosidade. O escalonamento rápido do Karpenter atende a esses cenários. Quando a fila de jobs fica cheia ou uma tarefa de processamento em lote é disparada, o Karpenter provisiona nós de computação para dar conta da carga. Quando os jobs terminam, ele reduz o cluster e libera os recursos ociosos.

3. Workloads de processamento de dados

Workloads de processamento de dados, como analytics, ETL ou pipelines de machine learning, se beneficiam da capacidade do Karpenter de provisionar recursos de computação sob demanda. Esses workloads costumam ter requisitos específicos de CPU, memória ou GPU que variam por job. O Karpenter avalia essas necessidades e provisiona os tipos de instância EC2 adequados. Conforme os jobs terminam, o Karpenter desativa nós ociosos, evitando desperdício de recursos.

4. Otimização de custos em clusters EKS multi-tenant

Clusters EKS multi-tenant geralmente precisam equilibrar eficiência de recursos e isolamento entre tenants. O Karpenter aloca recursos de computação com base nos padrões de uso. Quando os tenants precisam de mais capacidade, ele provisiona instâncias adicionais; quando a demanda cai, libera recursos. O Karpenter também pode aplicar políticas de separação usando taints, tolerations ou regras de afinidade. Isso ajuda as equipes de plataforma a gerenciar custos mantendo os limites entre tenants.

Karpenter vs. Kubernetes Cluster Autoscaler na AWS

O Karpenter e o Kubernetes Cluster Autoscaler adicionam capacidade de computação quando os pods não podem ser agendados, mas usam modelos de escalonamento diferentes.

O Cluster Autoscaler trabalha com grupos de nós existentes, como grupos de nós gerenciados do Amazon EKS ou grupos de Auto Scaling. Ele aumenta ou diminui o tamanho desses grupos com base em pods pendentes e nós ociosos. Funciona bem quando os workloads cabem em um número pequeno de tipos de nó conhecidos. É previsível e amplamente usado, mas costuma exigir planejamento cuidadoso. As equipes precisam definir grupos de nós, configurar tamanhos mínimos e máximos e decidir quais tipos de instância cada grupo deve usar.

O Karpenter não exige grupos de nós predefinidos. Em vez disso, ele provisiona instâncias EC2 com base nos requisitos dos pods pendentes. Isso permite escolher entre uma variedade maior de tipos de instância e opções de capacidade no momento do provisionamento. O Karpenter é indicado para ambientes em que os requisitos dos workloads mudam com frequência. Ele pode selecionar nós com base em CPU, memória, arquitetura, zona de disponibilidade e tipo de capacidade.

O principal trade-off é controle versus flexibilidade:

  • O Cluster Autoscaler usa um modelo baseado em grupos de nós fixos.
  • O Karpenter oferece provisionamento mais dinâmico, mas exige que as equipes gerenciem recursos específicos do Karpenter, como NodePool e EC2NodeClass.

Conteúdo relacionado: para uma comparação lado a lado mais aprofundada, leia nosso guia Karpenter vs. Cluster Autoscaler.

Tutorial: primeiros passos com o Karpenter na AWS

Este tutorial mostra como criar um cluster Amazon EKS, instalar o Karpenter, definir um NodePool padrão e testar o provisionamento automático de nós. O fluxo usa eksctl, kubectl, helm e a AWS CLI.

Passo 1: Antes de começar, instale as ferramentas necessárias:

Terminal window
aws --version
kubectl version --client
eksctl version
helm version

O Karpenter precisa de permissões da AWS para poder provisionar e encerrar instâncias EC2. Nesta configuração, essas permissões são vinculadas à service account do Karpenter via pod identity.

Passo 2: Comece definindo as principais variáveis de ambiente:

Terminal window
export KARPENTER_NAMESPACE="kube-system"
export KARPENTER_VERSION="1.14.0"
export K8S_VERSION="1.36"
export AWS_PARTITION="aws"
export CLUSTER_NAME="${USER}-karpenter-demo"
export AWS_DEFAULT_REGION="us-west-2"
export AWS_ACCOUNT_ID="$(aws sts get-caller-identity --query Account --output text)"
export TEMPOUT="$(mktemp)"

Essas variáveis são reutilizadas pelos comandos seguintes. CLUSTER_NAME identifica o cluster EKS, enquanto AWS_ACCOUNT_ID é usado na criação de roles e políticas do IAM.

Passo 3: Em seguida, obtenha os IDs das AMIs Amazon Linux 2 recomendadas para a versão do Kubernetes:

Terminal window
export ARM_AMI_ID="$(aws ssm get-parameter \
--name /aws/service/eks/optimized-ami/${K8S_VERSION}/amazon-linux-2-arm64/recommended/image_id \
--query Parameter.Value --output text)"
export AMD_AMI_ID="$(aws ssm get-parameter \
--name /aws/service/eks/optimized-ami/${K8S_VERSION}/amazon-linux-2/recommended/image_id \
--query Parameter.Value --output text)"

O Karpenter usa essas AMIs ao criar nós EC2. Mantê-las em variáveis facilita a reutilização na definição do EC2NodeClass mais adiante.

Passo 4: Crie a infraestrutura de suporte na AWS e o cluster EKS:

Terminal window
curl -fsSL https://raw.githubusercontent.com/aws/karpenter-provider-aws/v"${KARPENTER_VERSION}"/website/content/en/preview/getting-started/getting-started-with-karpenter/cloudformation.yaml > "${TEMPOUT}"
aws cloudformation deploy \
--stack-name "Karpenter-${CLUSTER_NAME}" \
--template-file "${TEMPOUT}" \
--capabilities CAPABILITY_NAMED_IAM \
--parameter-overrides "ClusterName=${CLUSTER_NAME}"

Essa stack do CloudFormation cria os recursos da AWS de que o Karpenter precisa, incluindo as permissões do IAM para provisionar nós.

Passo 5: Agora crie o cluster EKS:

Terminal window
eksctl create cluster -f - <<EOF
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
name: ${CLUSTER_NAME}
region: ${AWS_DEFAULT_REGION}
version: "${K8S_VERSION}"
tags:
karpenter.sh/discovery: ${CLUSTER_NAME}
iam:
withOIDC: true
podIdentityAssociations:
- namespace: "${KARPENTER_NAMESPACE}"
serviceAccountName: karpenter
roleName: ${CLUSTER_NAME}-karpenter
permissionPolicyARNs:
- arn:${AWS_PARTITION}:iam::${AWS_ACCOUNT_ID}:policy/KarpenterControllerPolicy-${CLUSTER_NAME}
iamIdentityMappings:
- arn: "arn:${AWS_PARTITION}:iam::${AWS_ACCOUNT_ID}:role/KarpenterNodeRole-${CLUSTER_NAME}"
username: system:node:{{EC2PrivateDNSName}}
groups:
- system:bootstrappers
- system:nodes
managedNodeGroups:
- instanceType: m5.large
amiFamily: AmazonLinux2023
name: ${CLUSTER_NAME}-ng
desiredCapacity: 2
minSize: 1
maxSize: 10
addons:
- name: eks-pod-identity-agent
EOF

Isso cria um pequeno grupo de nós gerenciado para executar os componentes do sistema e o próprio Karpenter. O cluster recebe a tag karpenter.sh/discovery, que o Karpenter usa depois para descobrir sub-redes e grupos de segurança.

Passo 6: Instale o Karpenter com o Helm:

Terminal window
helm registry logout public.ecr.aws
helm upgrade --install karpenter oci://public.ecr.aws/karpenter/karpenter \
--version "${KARPENTER_VERSION}" \
--namespace "${KARPENTER_NAMESPACE}" \
--create-namespace \
--set "settings.clusterName=${CLUSTER_NAME}" \
--set "settings.interruptionQueue=${CLUSTER_NAME}" \
--set controller.resources.requests.cpu=1 \
--set controller.resources.requests.memory=1Gi \
--set controller.resources.limits.cpu=1 \
--set controller.resources.limits.memory=1Gi \
--wait

Isso implanta o controlador do Karpenter no cluster. O controlador monitora pods que o Kubernetes não consegue agendar e então chama as APIs da AWS para criar instâncias EC2 adequadas.

Passo 7: Em seguida, crie um NodePool e um EC2NodeClass padrão:

Terminal window
cat <<EOF | envsubst | kubectl apply -f -
apiVersion: karpenter.sh/v1
kind: NodePool
metadata:
name: default
spec:
template:
spec:
requirements:
- key: kubernetes.io/arch
operator: In
values: ["amd64"]
- key: kubernetes.io/os
operator: In
values: ["linux"]
- key: karpenter.sh/capacity-type
operator: In
values: ["on-demand"]
- key: karpenter.k8s.aws/instance-category
operator: In
values: ["c", "m", "r"]
nodeClassRef:
group: karpenter.k8s.aws
kind: EC2NodeClass
name: default
expireAfter: 720h
limits:
cpu: 1000
disruption:
consolidationPolicy: WhenEmptyOrUnderutilized
consolidateAfter: 1m
---
apiVersion: karpenter.k8s.aws/v1
kind: EC2NodeClass
metadata:
name: default
spec:
amiFamily: AL2023
role: "KarpenterNodeRole-${CLUSTER_NAME}"
subnetSelectorTerms:
- tags:
karpenter.sh/discovery: "${CLUSTER_NAME}"
securityGroupSelectorTerms:
- tags:
karpenter.sh/discovery: "${CLUSTER_NAME}"
amiSelectorTerms:
- id: "${AMD_AMI_ID}"
EOF

O NodePool define quais nós o Karpenter pode criar. Neste exemplo, ele permite instâncias Linux amd64 sob demanda das famílias otimizadas para computação, de uso geral e otimizadas para memória.

O EC2NodeClass contém as configurações específicas da AWS. Ele informa ao Karpenter qual role do IAM, sub-redes, grupos de segurança e AMIs usar ao provisionar os nós.

Passo 8: Para testar o escalonamento, crie um deployment com zero réplicas:

Terminal window
cat <<EOF | kubectl apply -f -
apiVersion: apps/v1
kind: Deployment
metadata:
name: inflate
spec:
replicas: 0
selector:
matchLabels:
app: inflate
template:
metadata:
labels:
app: inflate
spec:
terminationGracePeriodSeconds: 0
containers:
- name: inflate
image: public.ecr.aws/eks-distro/kubernetes/pause:3.7
resources:
requests:
cpu: 1
EOF

Esse deployment usa a imagem leve pause. Cada réplica solicita uma CPU, o que o torna útil para testar o provisionamento de nós.

Passo 9: Escale o deployment para gerar pods não agendáveis:

Terminal window
kubectl scale deployment inflate --replicas 5

O Karpenter deve detectar os pods pendentes e criar novos nós EC2. Você pode acompanhar os logs do controlador com:

Terminal window
kubectl logs -f -n "${KARPENTER_NAMESPACE}" \
-l app.kubernetes.io/name=karpenter \
-c controller

Após o teste, exclua o deployment:

Terminal window
kubectl delete deployment inflate

Como o NodePool usa WhenEmptyOrUnderutilized, o Karpenter pode remover nós vazios ou subutilizados após a consolidação. Isso ajuda a reduzir custos quando os workloads não precisam mais da capacidade extra.

Passo 10: Para limpar o ambiente de demonstração, remova o Karpenter e exclua o cluster:

Terminal window
helm uninstall karpenter --namespace "${KARPENTER_NAMESPACE}"
aws cloudformation delete-stack \
--stack-name "Karpenter-${CLUSTER_NAME}"
eksctl delete cluster --name "${CLUSTER_NAME}"

Isso remove os principais recursos criados durante o tutorial e ajuda a evitar cobranças adicionais da AWS.

Boas práticas para o Karpenter na AWS

Confira algumas práticas úteis ao usar o Karpenter na AWS.

1. Fixe AMIs em produção

Em ambientes de produção, evite depender de AMIs selecionadas automaticamente. Em vez disso, fixe IDs de AMI específicos nas definições do EC2NodeClass. Isso dá às equipes controle sobre a imagem do sistema operacional usada nos worker nodes e reduz o risco de mudanças inesperadas causadas por novas versões de AMI. AMIs fixadas também melhoram a consistência entre ambientes e simplificam a resolução de problemas.

Ações recomendadas:

  • As equipes podem validar patches de segurança, runtimes de contêiner e compatibilidade com o Kubernetes antes de aplicar atualizações.
  • Teste novas AMIs em ambientes de não produção antes de atualizar os NodePools de produção.
  • Mantenha um processo documentado de atualização de AMIs que inclua revisões de segurança, procedimentos de rollback e rastreamento de versões.

2. Use controles de interrupção

O Karpenter inclui recursos de interrupção e consolidação que ajudam a reduzir custos ao substituir ou remover nós subutilizados. Embora esses recursos melhorem a eficiência, uma consolidação agressiva pode afetar a disponibilidade dos workloads se os nós forem encerrados rápido demais. Os controles de interrupção permitem equilibrar a otimização de custos com a estabilidade das aplicações, controlando como e quando as substituições de nós ocorrem.

Ações recomendadas:

  • Use políticas de consolidação junto com pod disruption budgets, topology spread constraints e prioridades de workload.
  • Para serviços críticos, considere aumentar os atrasos de consolidação ou limitar as substituições de nós durante o horário comercial.
  • Em clusters de produção, configure as opções de interrupção e consolidação com cuidado para evitar interrupções desnecessárias nos workloads.

3. Separe tipos de workload com NodePools

Workloads diferentes costumam ter requisitos de infraestrutura diferentes. Por exemplo, workloads em lote sem estado podem rodar em NodePools baseados em Spot, enquanto aplicações voltadas ao cliente podem usar capacidade sob demanda. Workloads de GPU, baseados em ARM e aplicações com alto consumo de memória também podem usar NodePools dedicados com restrições de instância específicas.

Ações recomendadas:

  • Separe os workloads em NodePools dedicados com base em sensibilidade a custos, requisitos de desempenho, arquitetura ou tolerância a interrupções.
  • Use taints, tolerations, node selectors e regras de afinidade para garantir que os workloads sejam agendados nos NodePools adequados.
  • Aplique políticas distintas de interrupção, consolidação e tipo de capacidade a cada NodePool conforme as características dos workloads.

4. Monitore o comportamento do Karpenter

Monitore o Karpenter como qualquer outro componente do cluster. A visibilidade das decisões de provisionamento, dos eventos do ciclo de vida dos nós e dos resultados de agendamento ajuda as equipes a identificar ineficiências, diagnosticar problemas e validar se o comportamento de escalonamento está alinhado aos requisitos dos workloads. O monitoramento regular também ajuda a detectar restrições de capacidade da AWS, problemas de configuração ou rotatividade inesperada de nós antes que afetem as aplicações.

Ações recomendadas:

  • Acompanhe eventos de provisionamento de nós, falhas de provisionamento, atividade de consolidação, pods pendentes e interrupções de instâncias EC2.
  • Use Amazon CloudWatch, Prometheus e eventos do Kubernetes para observar o comportamento do Karpenter. Métricas importantes incluem latência de provisionamento, tempo de inicialização dos nós, atrasos de agendamento de pods e rotatividade de nós.
  • Revise os logs do controlador para diagnosticar problemas relacionados a permissões do IAM, descoberta de sub-redes ou tipos de instância indisponíveis.

5. Teste antes de habilitar políticas agressivas

Recursos como consolidação agressiva, expiração rápida de nós ou uso amplo de Spot podem reduzir custos, mas podem introduzir instabilidade se não forem testados. Workloads podem reagir de formas diferentes a substituições frequentes de nós, especialmente aqueles com tempos longos de inicialização, componentes com estado ou requisitos rígidos de disponibilidade. Os testes ajudam as equipes a entender os impactos operacionais antes de aplicar essas configurações em produção.

Ações recomendadas:

  • Antes de habilitar essas configurações em produção, valide-as em ambientes de pré-produção usando workloads e padrões de escalonamento realistas.
  • Preste atenção a workloads com conexões de longa duração, tempos de inicialização elevados ou requisitos rígidos de disponibilidade.
  • Teste como as aplicações se comportam durante substituições de nós, eventos de interrupção de Spot e operações rápidas de redução de capacidade.

Como a PerfectScale maximiza seu autoscaling com Karpenter na AWS

Autoscalers de nós como o Karpenter e o Cluster Autoscaler são ferramentas poderosas para escalar nós conforme a demanda, melhorando a disponibilidade do cluster e reduzindo custos com ociosidade. Mas, mesmo com o autoscaling bem configurado, as equipes frequentemente enfrentam três problemas que o comprometem: contêineres superprovisionados que desperdiçam capacidade e forçam o autoscaler a provisionar mais nós que o necessário, contêineres subprovisionados que causam despejos de pods e pressão nos nós, e bin-packing ineficiente que deixa recursos subutilizados enquanto dispara eventos de escalonamento desnecessários. A PerfectScale resolve isso fazendo o right-sizing dos seus workloads de forma autônoma e dando a você visibilidade profunda da eficiência no nível dos nós, para que o Karpenter provisione exatamente a computação de que seu cluster realmente precisa.

Principais recursos da PerfectScale:

  • Correção proativa de erros de configuração: Analisa continuamente seus workloads para identificar e corrigir erros de configuração — como CPU Request Not Set, Memory Request Not Set e Memory Limit Not Set — evitando despejos imprevisíveis, sobrecarga de nós e autoscaling ineficiente.
  • Right-sizing autônomo de workloads: Ajusta instantaneamente os recursos dos workloads com base na utilização real e melhora o bin-packing dos pods para aumentar a eficiência do autoscaling, tudo sem intervenção manual.
  • Eficiência máxima de autoscaling: Oferece visibilidade excepcional dos custos e da utilização dos seus grupos de autoscaling e node pools, revela ineficiências e ajuda você a selecionar os tipos de nó ideais para melhorar a utilização, alcançar uma distribuição precisa de recursos e maximizar a eficiência de custos.

Pronto para extrair o máximo do Karpenter na AWS? Descubra como a PerfectScale otimiza de forma autônoma seus workloads e o autoscaling de nós na página da solução de autoscaling de nós da PerfectScale.