Quais são algumas das práticas recomendadas para usar instâncias spot do EC2 com o Amazon EKS?

Data da última atualização: 16/12/2022

Quero usar instâncias spot do Amazon Elastic Compute Cloud (Amazon EC2) com meu Amazon Elastic Kubernetes Service (Amazon EKS). Quais são algumas práticas recomendadas?

Breve descrição

Veja a seguir algumas práticas recomendadas para usar instâncias spot do Amazon EC2 com o Amazon EKS:

  • Não use instâncias spot para trabalhos de longa duração ou aplicações com estado.
  • Use grupos de nós gerenciados com instâncias spot.
  • Adicione vários tipos de instância aos grupos de nós.
  • Use o AWS Node Termination Handler (NTH) para grupos de nós autogerenciados.

Resolução

Não usar instâncias spot para trabalhos de longa duração ou aplicações com estado

A vida útil curta de uma instância spot pode causar términos indesejados em trabalhos de longa duração. Também pode afetar aplicações com estado porque as aplicações com estado não toleram desligamentos. Em vez disso, use instâncias sob demanda para trabalhos de longa duração.

Usar grupos de nós gerenciados com instâncias spot

É possível definir o tipo de capacidade de um grupo de nós gerenciados como spot. Então, o grupo de nós gerenciados configura um grupo do Auto Scaling para usar o rebalanceamento de capacidade do EC2 Auto Scaling. Quando o rebalanceamento de capacidade do EC2 Auto Scaling é ativado e um nó spot recebe uma recomendação de rebalanceamento, o Amazon EKS tenta substituir o nó spot.

Depois que o novo nó spot está pronto, o Amazon EKS separa e drena o nó spot anterior. Isso pode ajudar a reduzir o risco de corromper volumes do Amazon Elastic Block Store (Amazon EBS) ou de interromper conexões de banco de dados.

Adicionar vários tipos de instância aos grupos de nós

Cada grupo de instâncias spot consiste em uma capacidade de instância do EC2 não utilizada para um tipo de instância específico em uma zona de disponibilidade específica. Quando um grupo de nós tenta provisionar um novo nó, ele usa um dos tipos de instância definidos na configuração. Se o tipo de instância não tiver capacidade spot em nenhuma das zonas de disponibilidade, o grupo de nós não será escalado e será degradado.

Para evitar esse problema, aumente o número de tipos de instância semelhantes no grupo de nós.

Por exemplo, você tem um tipo de instância m5.large (2 vCPU/8 GiB RAM). Adicione instâncias com os mesmos valores de vCPU e RAM, como m5a.large, m5n.large e m4.large.

Use o AWS, o NTH, para grupos de nós autogerenciados

O AWS Node Termination Handler (NTH), do site do GitHub, é implantado em um cluster do Amazon EKS como uma implantação ou DaemonSet. O NTH adiciona recursos aos grupos de nós autogerenciados que eles não têm. Ele ajuda grupos de nós autogerenciados a detectar e responder adequadamente a eventos de manutenção do Amazon EC2, avisos de interrupção de spot, eventos de redução de escala na horizontal de grupos do Auto Scaling e rebalanceamentos de zona de disponibilidade. Use a opção Queue Processor (Processador de fila) para adicionar todos os recursos do NTH ao grupo de nós autogerenciados.

Usar o Karpenter para gerenciar instâncias spot

O Karpenter é um autoescalador de cluster de código aberto que provisiona automaticamente novos nós em resposta a pods não programáveis. Ele também tem recursos para reduzir a escala horizontalmente e consolidar nós para reduzir o desperdício e os custos. Ele usa a estratégia de alocação priorizada e otimizada para provisionar instâncias do EC2.

O Karpenter usa todos os tipos de instância do EC2 que estão disponíveis nas regiões e zonas de disponibilidade da AWS de um cluster do Amazon EKS para otimizar as instâncias spot. Você pode usar o Karpenter com a ferramenta EC2 Instance Selector para gerar uma lista de tipos de instâncias que atendem a requisitos de computação específicos. Ao usar um conjunto diversificado de tipos de instância, você pode reduzir o risco de erros de capacidade insuficientes. Também é uma prática recomendada distribuir instâncias em diferentes zonas de disponibilidade para usar diferentes grupos de spot.

Para obter mais informações sobre as melhores práticas e limitações do Karpenter, consulte as Karpenter best practices (Práticas recomendadas do Karpenter) no GitHub.

Importante: atualmente, o Karpenter não tem a capacidade de lidar com o aviso de dois minutos do Interruption Termination Notice (ITN – Aviso de Rescisão por Interrupção) de Spot. Para resolver isso, você pode instalar o NTH para isolar e drenar graciosamente os nós pontuais quando eles são interrompidos.


Este artigo ajudou?


Precisa de ajuda com faturamento ou suporte técnico?