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
▶️ Criando o cluster
📄 Arquivo 01-setup-cluster-eks.sh
sh 01-setup-cluster-eks.sh
🏬 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
▶️ Aguardar os deployments ficarem disponíveis
kubectl wait --for=condition=available deployments --all
▶️ 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
A aplicação ficará disponível em:
✅ 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
▶️ Ver os Worker Nodes do system:
kubectl get nodes -l karpenter.sh/nodepool=system
🔍 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
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
- 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
Monitore em tempo real:
kubectl get pods -A -w
🔍 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
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
Uso de Pods:
kubectl top pods -A
Eventos:
kubectl get events -A --sort-by=.metadata.creationTimestamp
🧪 4.6. Validando realocação alterando recursos
kubectl patch deployment ui \
-p '{"spec": {"template": {"spec": {"containers": [{"name": "ui", "resources": {"requests": {"cpu": "700m", "memory": "700Mi"}}}]}}}}'
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
▶️ Deletar o cluster EKS com Auto Mode
sh 02-cleanup-all.sh
🛡️ 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)