O AWS re:Invent ainda não começou oficialmente, mas há um novo recurso revolucionário no EKS para fazer você rodar o Kubernetes como um profissional!!
*Neste blog, vamos investigar o que é o EKS Auto Mode e ilustrar como ativar o EKS Auto Mode em clusters existentes e tentar migrar para as cargas de trabalho do nosso grupo de nós gerenciados para o EKS auto mode de um cluster existente, mas não conseguiremos fazer isso, descubra o motivo no blog! *
*Também analisei o preço que você pagará pelo EKS Auto em comparação com a simplicidade das operações que ele oferece para ajudar você a tomar uma decisão informada se deve ativar ou não. *
Criei um repositório de terraform para reproduzir rapidamente este blog com apenas 2 comandos, vamos conquistar o Modo Automático do EKS.
Motivação

2 de dezembro de 2024 (JST) – Pouco antes do re:Invent 2024, a AWS lançou um atualização empolgante *apresentando o EKS Auto Mode. *
O que essa atualização significa para você?
- Automatiza todos os tipos de gerenciamento para seu cluster EKS , o que permite que a AWS também configure e gerencie a infraestrutura que facilita o funcionamento suave das suas cargas de trabalho.
- A infraestrutura de cluster gerenciada pela AWS inclui muitas capacidades do Kubernetes como componentes centrais, ao contrário de add-ons, como autoescalonamento de computação, pod e rede de serviços, balanceamento de carga de aplicações, DNS de cluster, armazenamento em blocos e suporte a GPU
- Você pode implantar um novo cluster EKS Auto Mode ou ativar o EKS Auto Mode em um cluster existente
Nota: O suporte ao Terraform (ainda em andamento) ainda não está lá, então para este blog vamos usar o console da AWS.
Considerações de custo desta atualização
- Segundo https://aws.amazon.com/eks/pricing/
- Você continuará pagando por 2 componentes :
- Preço do cluster Amazon EKS: *$0,10 por cluster/hora *($0,60/cluster para estendido)
- Mas se você usar o modo automático, terá que pagar a mais!!
Você paga pelo Amazon EKS Auto Mode com base na duração e tipo das instâncias Amazon EC2 lançadas e gerenciadas pelo EKS Auto Mode. Os preços do Amazon EKS Auto Mode abaixo são adicionais ao preço da instância Amazon EC2, que cobre as próprias instâncias EC2.
*Em palavras simples, o EKS Auto Mode cobra uma taxa de gerenciamento que varia conforme o tipo de instância EC2 lançada, além dos custos regulares da sua instância EC2. *

O que ele realmente automatiza
O modo automático EKS foi projetado para automatizar componentes do plano de dados, então aqui estão os seguintes componentes sendo automatizados junto com os recursos:
Componentes Automáticos do Plano de Dados no Modo Automático EKS
- Gerenciamento de Computação: Automatiza aspectos-chave da computação em cluster, incluindo provisionamento de nós, escalabilidade, atualizações e balanceamento de carga, para operações Kubernetes sem complicações.
- Nós:
- Seleciona automaticamente AMIs otimizadas com serviços essenciais.
- Protege os nós usando SELinux, arquivos raiz somente leitura e acesso proibido por SSH/SSM.
- Inclui suporte a GPUs para NVIDIA e Neuron.
- Escalonamento Automático:
- Usa o Karpenter para monitorar e implantar novos nós para Pods não escalonáveis.
- Termina dinamicamente nós não utilizados para otimizar recursos.
- Nós:
- Melhorias:
- Aplica atualizações do sistema operacional e dos componentes com interrupção mínima da carga de trabalho.
- Aplica uma vida útil máxima de 21 dias dos nós para segurança e estabilidade.
- Balanceamento de carga:
- Integra-se com Elastic Load Balancing (ALB & NLB) para provisionamento e escalonamento automatizados.
- Fornece balanceamento de carga pronto para produção, alinhado com as melhores práticas da AWS.
- Automação de Armazenamento
- Configura armazenamento efêmero com configurações de volume, criptografia e políticas de exclusão gerenciadas automaticamente para uso ideal.
- Automação de Rede
- Gerencia a conectividade Pod e de serviços com suporte a IPv4/IPv6 e estende os espaços IP usando blocos CIDR secundários.
Ativando o modo automático no Cluster Existente
- Neste blog, veremos como ativar em um cluster existente, já que o blog da AWS já abordou o modo automático EKS no novo cluster
- Para imitar o cluster existente, você pode implantar o cluster EKS com grupos de nós gerenciados pelo EKS usando o Terraform no meu repositório
Migrações Apoiadas

- Na redação deste blog, EKS suporta migração de Karpenter para EKS Modo Auto, migração de grupos de nós gerenciados EKS para EKS Modo Auto, migração de EKS Fargate para nós EKS Modo Auto
- Para manter este blog simples, vou mostrar como migrar dos Grupos de Nós gerenciados pelo EKS para o Modo Automático do EKS (espero que :))
Nota: Também lembre-se de dar uma olhada em como configurar recursos baseados em Kubernetes para serem propriedade de controladores autogerenciados ou do EKS Auto Mode.
Pré-requisitos
- Atualização de permissões IAM e configuração das configurações principais do Modo Automático EKS
- Versão mínima obrigatória de certos Add-ons Perspective do Amazon EKS.
Atualizando permissões IAM e configurando as configurações principais do Modo Automático EKS
- O papel IAM do cluster de um cluster EKS não pode ser alterado após a criação do cluster. O Modo Automático EKS requer permissões adicionais nesse papel. Você deve anexar políticas adicionais ao papel atual.
- Navegar para o papel IAM do Cluster e adicionar as seguintes políticas
- AmazonEKSComputePolicy
- AmazonEKSBlockStoragePolicy
- Política de Equilíbrio da AmazonEKSLoadBalancing
- AmazonEKSNetworkingPolicy
- AmazonEKSClusterPolicy (já existe para mim)

- Editar a Política de Trust e adicionar 'sts:TagSession' para permitir Ação.

Versão mínima obrigatória de certos complementos do Amazon EKS
Perspectiva.
- Configurei o código do terraform para buscar as versões mais recentes dos add-ons , assim você não precisa fazer nada.
Crie um Pool de Nós Karpenter
- EKS usa Karpenter nos bastidores para escalonamento.
Karpenter, uma ferramenta de provisionamento de nós que ajuda a otimizar a escalabilidade do cluster e a utilização de recursos. Com o recurso NodePool do Karpenter, você pode definir requisitos específicos para seus recursos de computação, incluindo tipos de instância, zonas de disponibilidade, arquiteturas e tipos de capacidade.

- Selecionar Criar papéis recomendados para o papel IAM do Nó
- Estou usando o pool de nós pré-configurado, mas você pode configurar o seu próprio usando seu próprio arquivo yaml como este exemplo

- Selecione permissões padrão e crie função

- Depois que a função é criada e você seleciona o próximo, você pode ver notificações de que o modo automático está sendo ativado

- Uma vez ativada, você pode confirmar a opção do modo automático usando a aba 'Overview' no console

- Como ativado durante a ativação do passo, o EKS também criou pools de nós.
Desabilitar o EKS Auto Modę
Você pode desativar o Modo Automático do EKS em um Cluster EKS existente. Essa é uma operação destrutiva.
- O EKS encerrará todas as instâncias EC2 operadas pelo Modo Automático EKS.
- O EKS irá excluir todos os balanceadores de carga operados pelo Modo Automático EKS.
Migrar dos Grupos de Nós Gerenciados EKS para o Modo Automático EKS
Ao migrar seu cluster Amazon EKS para o modo automático EKS, você pode migrar suavemente suas cargas de trabalho existentes a partir de grupos de nós gerenciados usando a ferramenta LI EKSCTL.
Esse processo garante disponibilidade contínua das aplicações, enquanto o modo automático EKS otimiza seus recursos de computação. A migração pode ser realizada com mínima interrupção nas suas aplicações em execução.
Pré-requisitos
- Cluster com o Modo Automático EKS ativado
- EKSCTL CLI instalado e conectado ao seu cluster. Para mais informações, veja Configurar para usar Amazon EKS.
- Karpenter não está instalado no cluster.
Estado atual dos Pods
- 2 pods estão rodando em grupos de nós gerenciados.
jatin.mehrotra@CK0662-001 eks-auto-mode % kubectl get po -o wide
NOME STATUS DE PRONTO REINICIA IDADE IP NÓ NOMEADO PORTAS DE PRONTIDÃO DO NÓ
test-65b7dbddd4-jdxhw 1/1 Rodando 0 2m29s 10.0.2.52 ip-10-0-2-85.ec2.internal <none> <none>
test-65b7dbddd4-lzd4r 1/1 Rodando 0 2m29s 10.0.1.118 ip-10-0-1-128.ec2.internal <none> <none>

- Conforme o docs, Use o seguinte comando CLI EKSCTL para iniciar pods de drenagem a partir das instâncias existentes do grupo de nós gerenciados. O Modo Automático EKS criará novos nós para apoiar os pods deslocados.
Atualização EKSCTL Auto-Modo-Configuração --Cluster EKS-Auto-Teste --Drenogrupo-NodeGroup --Região US-East-1 --Perfil CK-Test
- Achei que fosse minha versão de eksctl, mas parece que meu eksctl ainda não recebeu atualização para essa flag. Também há uma questão aberta para o repositório
oficial de eksctl
- Minha saída da versão EKSCTL (é a versão mais recente)
Informações EKSCTL
Versão EKSCTL: 0.194.0
- Os outros comandos para eksctl estão rodando para meu cluster, então definitivamente não é problema de conexão
jatin.mehrotra@CK0662-001 eks-auto-mode % eksctl obter addons --cluster eks-auto-test --região us-east-1 --perfil ck-test
2024-12-02 12:29:41 [i] Versão Kubernetes "1.30" em uso pelo cluster "eks-auto-test"
2024-12-02 12:29:41 [i] recebendo todos os addons
2024-12-02 12:29:44 [i] Para ver problemas em um addon execute 'eksctl get addon --name <addon-name> --cluster <cluster-name>'
NOME VERSÃO QUESTÃO DE STATUS DE PAPEL IAMROLE ATUALIZAÇÃO DISPONIBILIDADE VALORES DE CONFIGURAÇÃO POD IDENTIDADE ASSOCIAÇÃO PAPÉIS
amazon-cloudwatch-observability v2.5.0-EKSBUILD.1 ATIVO 0
aws-ebs-csi-driver v1.37.0-eksbuild.1 ATIVO 0
coredns v1.11.1-eksbuild.8 ATIVO 0 v1.11.3-eksbuild.2,v1.11.3-eksbuild.1,v1.11.1-eksbuild.13,v1.11.1-eksbuild.11,v1.11.1-eksbuild.9
kube-proxy v1.30.6-eksbuild.3 ATIVO 0
vpc-cni v1.19.0-EKSBUILD.1 ATIVO 0
Atualização: 3 de dezembro, 00h20 JST
- Embora a equipe da AWS tenha lançado uma nova versão do eksctl, o problema ainda persiste, assim como a documentação também está incorreta.
Ele precisa de '--drain-all-nodegroups' assim como do arquivo de configuração do cluster, que é muito difícil de gerar para o cluster existente criado pelo console ou terraform.
eksctl update auto-mode-config --drain-all-nodegroups -f eks-config.yaml --profile ck-test
Precisamos esperar mais para que a AWS possa corrigir esse bug. Há um novo problema para esse bug.
Investigando a Atualização da Versão Kubernetes de um cluster de Modos Automáticos do EKS
- A capacidade de processamento do Amazon EKS Auto Mode controla a versão Kubernetes dos nós. Após atualizar o plano de controle, o EKS Auto Mode começará a atualizar incrementalmente os nós gerenciados. O EKS Auto Mode respeita os orçamentos de interrupção de pods.
- Você não precisa atualizar manualmente as capacidades do Amazon EKS Auto Mode, incluindo as capacidades de computação automática, armazenamento em blocos e balanceamento de carga.
- O Modo Automático simplifica o processo de atualização de versão ao coordenar as atualizações do plano de controle com substituições de nós, mantendo a disponibilidade da carga de trabalho por meio de orçamentos de interrupção de pods.
- Ao atualizar um cluster de Modo Auto, muitos componentes que tradicionalmente exigiam atualizações manuais agora são gerenciados como parte do serviço.
- Após iniciar uma atualização do plano de controle, o Modo Automático EKS começa a substituir os nós do seu cluster. Os novos nós possuem a versão correspondente do Kubernetes. O Modo Automático EKS observa os orçamentos de interrupção dos pods ao atualizar nós.
- CoreDNS
- KubeProxy
- Controlador AWS Load Balancer
- Karpenter
- Driver AWS EBS CSI
- No entanto, você ainda é responsável por atualizar:
- Aplicativos e cargas de trabalho implantados no seu cluster
- Add-ons e controladores autogerenciados
- Complementos Amazon EKS
Da perspectiva do Arquiteto de Soluções
- Neste blog vimos como o modo EKS Auto simplifica as operações do Kubernetes ao transferir o gerenciamento de infraestrutura para a AWS.
- Seleciona automaticamente as melhores instâncias de EC2, otimiza custos de computação e escala os recursos dinamicamente com base na demanda.
- Esse recurso melhora a segurança, o desempenho e a disponibilidade, ao mesmo tempo em que reduz a necessidade de expertise profunda, planejamento de capacidade e gerenciamento manual.
- Mas, como vimos no blog, ainda é um recurso novo, pode haver necessidade de atualizações e correções de bugs.
- *Sim, é verdade que simplifica as operações e permite que os usuários rodem o Kubernetes como um PRO de forma segura, mas você tem que pagar um preço por isso. *
*Inicialmente, acho que isso aumentará o custo, mas os benefícios reais apareceriam após um uso sustentado para compensar o custo extra com facilidade de operação. *