Ajudar a melhorar esta página
Para contribuir com este guia de usuário, escolha o link Editar esta página no GitHub, disponível no painel direito de cada página.
Diminua a latência para aplicações com tempos de inicialização longos usando aquecimento com grupos de nós gerenciados
Quando seus aplicativos têm longos tempos de inicialização ou boot, eventos de escalabilidade horizontal podem causar atrasos. Os novos nós devem ser totalmente inicializados e ingressar no cluster antes que os pods possam ser programados neles. Essa latência pode afetar a disponibilidade do aplicativo durante picos de tráfego ou eventos de escalabilidade rápida. Os grupos de alta atividade resolvem esse problema ao manter um grupo de instâncias do EC2 pré-inicializadas que já concluíram o processo de inicialização. Durante um evento de escalabilidade horizontal, as instâncias se movem do aquecimento diretamente para seu cluster, ignorando as demoradas etapas de inicialização e reduzindo significativamente o tempo necessário para que a nova capacidade fique disponível. Para obter mais informações, consulte Diminuir a latência de aplicativos que têm longos tempos de inicialização usando aquecimentos no Guia do usuário do Amazon EC2 Auto Scaling.
Os grupos de alta atividade do Amazon EKS oferecem suporte a aquecimentos do Amazon EC2 Auto Scaling. Um aquecimento mantém instâncias EC2 pré-inicializadas junto com seu grupo do Auto Scaling, que podem se juntar rapidamente ao seu cluster durante eventos de ajuste de escala automático. As instâncias no aquecimento já concluíram o processo de inicialização e podem ser mantidas no estado Stopped, Running ou Hibernated.
O Amazon EKS gerencia aquecimentos em todo o ciclo de vida do grupo de nós usando a função AWSServiceRoleForAmazonEKSNodegroup vinculada ao serviço para criar, atualizar e excluir recursos de aquecimento.
Como funciona
Quando você configura um aquecimento, o Amazon EKS cria um aquecimento de Auto Scaling do EC2 conectada ao grupo do Auto Scaling do seu grupo de nós. As instâncias são iniciadas no aquecimento, concluem o processo de inicialização e permanecem no estado configurado (Running, Stopped, ou Hibernated) até serem necessárias. Durante eventos de escalabilidade horizontal, as instâncias passam do aquecimento para o grupo do Auto Scaling, concluem o processo de inicialização do Amazon EKS para ingressar no cluster e ficam disponíveis para o agendamento de pods. Com a reutilização de instâncias ativada, as instâncias podem retornar ao aquecimento durante eventos de escalabilidade.
Importante
Sempre configure aquecimento por meio da API Amazon EKS usando create-nodegroup ou update-nodegroup-config. Não modifique manualmente as configurações do aquecimento usando a API EC2 Auto Scaling, pois isso pode causar conflitos com o gerenciamento dos recursos do Amazon EKS.
Considerações
Importante
Antes de configurar grupos de alta atividade, consulte os pré-requisitos e as limitações em Aquecimentos para o Amazon EC2 Auto Scaling no Guia do Usuário do Amazon EC2 Auto Scaling. Nem todos os tipos de instância, AMIs ou configurações são compatíveis.
-
Permissões do IAM — A função
AWSServiceRoleForAmazonEKSNodegroupvinculada ao serviço (criada automaticamente com seu primeiro grupo de nós gerenciados) inclui as permissões necessárias de gerenciamento do aquecimento. -
Limitações da AMI — Aquecimentos não oferecem suporte a AMIs personalizadas. Você deve usar AMIs otimizadas para o Amazon EKS.
-
Limitações do Bottlerocket — Se estiver usando AMIs do Bottlerocket, o estado do pool
Hibernatednão é suportado. Use apenas estados de poolStoppedouRunning. Além disso, o recursoreuseOnScaleInnão é compatível com as AMIs do Bottlerocket. -
Suporte à hibernação — O estado do pool
Hibernatedsó é suportado em tipos de instância específicos. Consulte os pré-requisitos de hibernação no Guia do usuário do Amazon EC2 para ver os tipos de instância compatíveis. -
Impacto no custo – Criar um aquecimento quando ele não é necessário pode gerar custos desnecessários.
-
Planejamento de capacidade — Dimensione seu aquecimento com base em padrões de escala para equilibrar custo e disponibilidade. Comece com 10 a 20% da capacidade de pico esperada.
-
Rede VPC — Garanta endereços IP suficientes para instâncias de grupo e aquecimento do Auto Scaling.
Configure aquecimentos
Você pode configurar aquecimento ao criar um novo grupo de nós gerenciados ou atualizar um grupo de nós gerenciados existente para adicionar suporte a aquecimento.
Parâmetros de configuração
-
enabled — (booleano) Indica sua intenção de conectar um aquecimento ao grupo de nós gerenciados. Necessário para permitir o suporte a aquecimento.
-
MaxGroupPreparedCapacity — (inteiro) Total máximo de instâncias no aquecimento e no grupo do Auto Scaling combinados.
-
minSize — (inteiro) Número mínimo de instâncias a serem mantidas no aquecimento. Padrão:
0. -
poolState — (string) Estado para instâncias de aquecimento. Padrão:
Stopped. -
ReuseOnScaleIn — (boolean) Se as instâncias retornam ao aquecimento durante eventos de redução em vez de encerrá-las. Padrão:
false. Não é compatível com as AMIs do Bottlerocket.
Usar a AWS CLI
Você pode configurar um aquecimento ao criar um grupo de nós gerenciados ou adicionar um a um grupo de nós existente.
Crie um grupo de nós com um aquecimento
aws eks create-nodegroup \ --cluster-name my-cluster \ --nodegroup-name my-nodegroup \ --node-role arn:aws:iam::111122223333:role/AmazonEKSNodeRole \ --subnets subnet-12345678 subnet-87654321 \ --region us-east-1 \ --scaling-config minSize=2,maxSize=10,desiredSize=3 \ --warm-pool-config enabled=true,maxGroupPreparedCapacity=8,minSize=2,poolState=Stopped,reuseOnScaleIn=true
Adicione um aquecimento a um grupo de nós existente
aws eks update-nodegroup-config \ --cluster-name my-cluster \ --nodegroup-name my-nodegroup \ --region us-east-1 \ --warm-pool-config enabled=true,maxGroupPreparedCapacity=8,minSize=2,poolState=Stopped,reuseOnScaleIn=true
Atualizar configuração
Atualize as configurações do aquecimento a qualquer momento usando update-nodegroup-config. As instâncias existentes do aquecimento não são afetadas imediatamente; novas configurações se aplicam às instâncias que entram no aquecimento após a atualização.
aws eks update-nodegroup-config \ --cluster-name my-cluster \ --nodegroup-name my-nodegroup \ --region us-east-1 \ --warm-pool-config enabled=true,maxGroupPreparedCapacity=10,minSize=3,poolState=Running,reuseOnScaleIn=true
Para desativar o aquecimento conectado ao seu grupo de nós, defina enabled=false:
aws eks update-nodegroup-config \ --cluster-name my-cluster \ --nodegroup-name my-nodegroup \ --region us-east-1 \ --warm-pool-config enabled=false
Recursos adicionais
-
Aquecimentos para Amazon EC2 Auto Scaling no Guia do usuário do Amazon EC2 Auto Scaling
-
Simplificar o ciclo de vida dos nós com grupos de nós gerenciados