DEV Community

🚀 EKS Auto Mode na prática

O Amazon EKS Auto Mode representa um avanço significativo na operação de clusters Kubernetes, eliminando controles de infraestrutura manual, provisionando compute sob demanda e permitindo foco exclusivo nas workloads.

Neste guia hands-on, você aprenderá:

  • A criar um cluster com Auto Mode já habilitado usando eksctl
  • A implantar a Retail Store Sample App — aplicação oficial da AWS para testes de workloads reais
  • A analisar o funcionamento do Auto Mode, incluindo provisionamento, escalabilidade e distribuição de Pods
  • A realizar testes práticos de resiliência e comportamento automático do cluster

📌 Arquivos de configuração do artigo:
👉 https://github.com/rodrigofrs13/eks-auto-mode-na-pratica

🧩 1. O que é o EKS Auto Mode?

O EKS Auto Mode executa automaticamente tarefas de operação de cluster, incluindo:

  • Seleção e provisionamento de compute sob demanda
  • Autoscaling e realocação de Pods
  • Gerenciamento de AMIs, patches e updates
  • Escolha automática dos melhores tipos de instância
  • Redução de custos com otimização inteligente
  • Você envia Pods → o Auto Mode provisiona infraestrutura → o workload roda

⚙️ 2. Criando o cluster com Auto Mode usando eksctl
📄 Arquivo conf-cluster-eks.yaml

# cluster.yaml
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
    name: cluster-eks
    region: us-east-1
    version: '1.32'
    tags:
      auto-mode: "enabled"
      graviton-enabled: "true"
      spot-instances-enabled: "true"
      cost-optimization: "enabled"
      architecture: "multi-arch"
      environment: "dev"
      owner: "devops-team"
      provisioned-by: "eksctl"


availabilityZones: ["us-east-1a", "us-east-1b", "us-east-1c"]    

vpc:
  cidr: "10.0.0.0/16"
  nat:
    gateway: Single
  clusterEndpoints:
    publicAccess: true
    privateAccess: true    

cloudWatch:
  clusterLogging:
    enableTypes: ["api", "audit", "authenticator", "controllerManager", "scheduler"]
    logRetentionInDays: 1

autoModeConfig:
    enabled: true
    nodePools: 
      - general-purpose
      - system    

iam:
  withOIDC: true



Enter fullscreen mode Exit fullscreen mode

▶️ Criando o cluster
📄 Arquivo 01-setup-cluster-eks.sh

sh 01-setup-cluster-eks.sh
Enter fullscreen mode Exit fullscreen mode

🏬 3. Implantando a Retail Store Sample App

A Retail Store Sample App simula uma loja online composta por múltiplos microserviços, ideais para testes de provisionamento automático.

▶️ Instalar a aplicação

kubectl apply -f https://github.com/aws-containers/retail-store-sample-app/releases/latest/download/kubernetes.yaml
Enter fullscreen mode Exit fullscreen mode

▶️ Aguardar os deployments ficarem disponíveis

kubectl wait --for=condition=available deployments --all
Enter fullscreen mode Exit fullscreen mode

▶️ Acessar a aplicação via port-forward

kubectl port-forward $(kubectl get pods \
 --selector=app.kubernetes.io/name=ui -o jsonpath='{.items[0].metadata.name}') 8080:8080
Enter fullscreen mode Exit fullscreen mode

A aplicação ficará disponível em:

👉 http://localhost:8080/

✅ 4. Testes e Análise da Configuração do Modo Automático do EKS

Agora vamos validar como o Auto Mode está provisionando, escalando e distribuindo Pods e compute.

🔍 4.1. Verificar os Node Pools do EKS Auto Mode

O Auto Mode organiza a infraestrutura em pools semelhantes ao Karpenter:

  • general-purpose → para workloads da aplicação
  • system→ reservado para workloads do sistema

▶️ Ver os Worker Nodes do general-purpose:

kubectl get nodes -l karpenter.sh/nodepool=general-purpose
Enter fullscreen mode Exit fullscreen mode

▶️ Ver os Worker Nodes do system:

kubectl get nodes -l karpenter.sh/nodepool=system
Enter fullscreen mode Exit fullscreen mode

🔍 4.2. Ver distribuição dos Pods entre os NodePools

for node in $(kubectl get nodes -l karpenter.sh/nodepool=general-purpose -o custom-columns=NAME:.metadata.name --no-headers); do
  echo "Pods on $node:"
  kubectl get pods --all-namespaces --field-selector spec.nodeName=$node
done
Enter fullscreen mode Exit fullscreen mode

Isso permite analisar:

  • Balanceamento
  • Quantidade de Pods por nó
  • Regiões de alocação
  • Reações do Auto Mode ao workload

🔍 4.3. Analisando agendamento dos Pods

kubectl get pods -o wide -A

Enter fullscreen mode Exit fullscreen mode
  • Você poderá avaliar:
  • Em qual nó cada Pod está rodando
  • IP, Node, estado e reinicializações
  • Padrões de alocação automática

📈 4.4. Simulando aumento de carga

Aumente as réplicas para ativar provisionamento automático:

kubectl scale deployment ui --replicas=10
kubectl scale deployment carts --replicas=10
kubectl scale deployment catalogue --replicas=10
Enter fullscreen mode Exit fullscreen mode

Monitore em tempo real:

kubectl get pods -A -w
Enter fullscreen mode Exit fullscreen mode

🔍 4.7. Ver distribuição dos Pods entre os NodePools

for node in $(kubectl get nodes -l karpenter.sh/nodepool=general-purpose -o custom-columns=NAME:.metadata.name --no-headers); do
  echo "Pods on $node:"
  kubectl get pods --all-namespaces --field-selector spec.nodeName=$node
done
Enter fullscreen mode Exit fullscreen mode

O Auto Mode deve:

  • Criar novas instâncias
  • Realocar Pods
  • Ajustar compute
  • Reduzir nós quando a carga diminui

📊 4.5. Analisando métricas nativas do cluster
Uso de nós:

kubectl top nodes
Enter fullscreen mode Exit fullscreen mode

Uso de Pods:

kubectl top pods -A
Enter fullscreen mode Exit fullscreen mode

Eventos:

kubectl get events -A --sort-by=.metadata.creationTimestamp
Enter fullscreen mode Exit fullscreen mode

🧪 4.6. Validando realocação alterando recursos

kubectl patch deployment ui \
  -p '{"spec": {"template": {"spec": {"containers": [{"name": "ui", "resources": {"requests": {"cpu": "700m", "memory": "700Mi"}}}]}}}}'
Enter fullscreen mode Exit fullscreen mode

O comportamento esperado é:

  • Auto Mode provisiona compute mais robusto
  • Pods são redistribuídos
  • Novos nós podem surgir

🧹 5. Clean Up — Removendo todos os recursos
▶️ Remover a aplicação

kubectl delete -f https://github.com/aws-containers/retail-store-sample-app/releases/latest/download/kubernetes.yaml
Enter fullscreen mode Exit fullscreen mode

▶️ Deletar o cluster EKS com Auto Mode

sh 02-cleanup-all.sh
Enter fullscreen mode Exit fullscreen mode

🛡️ 6. Conclusão

Com o EKS Auto Mode, a operação de clusters Kubernetes torna-se mais simples, eficiente e automática.
Neste artigo, exploramos:

  • A criação de clusters prontos para Auto Mode
  • A implantação de uma aplicação real da AWS
  • A análise do comportamento inteligente de provisionamento
  • Testes práticos de resiliência e escalabilidade

Esse modo reduz consideravelmente o esforço de operação e permite foco total no desenvolvimento de aplicações.

📌 Todos os arquivos usados no artigo estão no repositório:
👉 https://github.com/rodrigofrs13/eks-auto-mode-na-pratica

Top comments (0)