Grupos de nós gerenciados - Amazon EKS

Grupos de nós gerenciados

Os grupos de nós gerenciados do Amazon EKS automatizam o provisionamento e o gerenciamento do ciclo de vida dos nós (instâncias do Amazon EC2) para clusters de Kubernetes do Amazon EKS.

Com os grupos de nós gerenciados do Amazon EKS, não é necessário provisionar ou registrar separadamente as instâncias do Amazon EC2 que fornecem capacidade computacional para executar as aplicações do Kubernetes. Você pode criar, atualizar ou encerrar os nós para o cluster com uma única operação. Os nós são executados usando as AMIs otimizadas mais recentes do Amazon EKS na sua conta da AWS. As atualizações e encerramentos do nó drenam os nós automaticamente para garantir que as aplicações continuem disponíveis.

Todos os nós gerenciados são provisionados como parte de um grupo do Amazon EC2 Auto Scaling gerenciado pelo Amazon EKS para você. Todos os recursos, incluindo as instâncias e os grupos de Auto Scaling, são executados na sua conta da AWS. Cada grupo de nós é executado em várias zonas de disponibilidade definidas por você.

Você pode adicionar um grupo de nós gerenciados a clusters novos ou existentes usando o console do Amazon EKS, o eksctl, a AWS CLI, a API da AWS ou infraestruturas como ferramentas de programação, incluindo o AWS CloudFormation. Os nós iniciados como parte de um grupo de nós gerenciados são etiquetados automaticamente para detecção automática pelo Kubernetes Cluster Autoscaler. É possível usar o grupo de nós para aplicar rótulos do Kubernetes aos nós e atualizá-los a qualquer momento.

Não há custos adicionais pelo uso dos grupos de nós gerenciados pelo Amazon EKS. Você só pagará pelos recursos da AWS que provisionar. Isso inclui as instâncias do Amazon EC2, os volumes do Amazon EBS, as horas de cluster do Amazon EKS e qualquer outra infraestrutura da AWS. Não há taxas mínimas nem compromissos antecipados.

Para começar a usar um novo cluster do Amazon EKS e um grupo de nós gerenciados, consulte Conceitos básicos do Amazon EKS - AWS Management Console e AWS CLI.

Para adicionar um grupo de nós gerenciados a um cluster existente, consulte Criar um grupo de nós gerenciados.

Conceitos dos grupos de nós gerenciados

  • Os grupos de nós gerenciados do Amazon EKS criam e gerenciam instâncias do Amazon EC2 para você.

  • Todos os nós gerenciados são provisionados como parte de um grupo do Amazon EC2 Auto Scaling gerenciado pelo Amazon EKS para você. Todos os recursos, incluindo as instâncias do Amazon EC2 e os grupos do Auto Scaling, são executados na sua conta da AWS.

  • Um grupo de Auto Scaling do grupo de nós gerenciados abrange todas as sub-redes que você especificar na criação do grupo.

  • O Amazon EKS adiciona etiquetas aos recursos do grupo de nós gerenciados para que eles sejam configurados para usar o Kubernetes Autoscaler do cluster.

    Importante

    Se você estiver executando uma aplicação com estado em várias zonas de disponibilidade baseadas em volumes do Amazon EBS e usando o Kubernetes Autoscaler do cluster, deverá configurar vários grupos de nós, cada um limitado a uma única zona de disponibilidade. Além disso, você deverá ativar o recurso --balance-similar-node-groups.

  • Por padrão, as instâncias em um grupo de nós gerenciados usam a versão mais recente da AMI do Amazon Linux 2 otimizada pelo Amazon EKS para a versão do Kubernetes do cluster. Você pode escolher entre as variantes padrão e GPU da AMI do Amazon Linux 2 otimizada pelo Amazon EKS. Se você implantar usando um modelo de execução, também será possível usar uma AMI personalizada. Para obter mais informações, consulte . Suporte do modelo de execução.

  • Se você não usar um modelo de lançamento personalizado ao criar primeiro um grupo de nós gerenciados, um modelo de lançamento será gerado automaticamente. Não modifique manualmente esse modelo gerado automaticamente ou ocorrerão erros.

  • O Amazon EKS segue o modelo de responsabilidade compartilhada para CVEs e patches de segurança nos grupos de nós gerenciados. Quando os nós gerenciados executam uma AMI otimizada para o Amazon EKS, o Amazon EKS é responsável por criar versões da AMI com patches quando erros ou problemas forem relatados. Podemos publicar uma correção. No entanto, você é responsável por implantar essas versões de AMI com patches nos grupos de nós gerenciados. Quando os nós gerenciados executam uma AMI personalizada, você é responsável por criar versões da AMI com patches quando erros ou problemas forem relatados e, em seguida, implantar a AMI. Para obter mais informações, consulte . Atualizar um grupo de nós gerenciados.

  • Os grupos de nós gerenciados do Amazon EKS podem ser executados em sub-redes públicas e privadas. Se você executar um grupo de nós gerenciados em uma sub-rede pública depois de 22 de abril de 2020, a sub-rede deverá ter o MapPublicIpOnLaunch definida como true para que as instâncias possam ingressar com êxito em um cluster. Se a sub-rede pública foi criada usando eksctl ou os modelos do Amazon EKS fornecidos pelo AWS CloudFormation depois de 26 de março de 2020, essa configuração já estará definida como true. Se as sub-redes públicas foram criadas antes de 26 de março de 2020, será necessário alterar a configuração manualmente. Para obter mais informações, consulte Modificar o atributo de endereçamento IPv4 público para a sub-rede.

  • Ao usar endpoints da VPC em sub-redes privadas, é necessário criar endpoints para com.amazonaws.region.ecr.api, com.amazonaws.region.ecr.dkr e um endpoint de gateway para o Amazon S3. Para obter mais informações, consulte Amazon ECR interface VPC endpoints (AWS PrivateLink) (Endpoints da VPC de interface do Amazon ECR).

  • Os grupos de nós gerenciados não podem ser implantados no AWS Outposts, no AWS Wavelength ou no AWS Local Zones.

  • Você pode criar vários grupos de nós gerenciados em um único cluster. Por exemplo, é possível criar um grupo de nós com a AMI do Amazon Linux 2 padrão otimizada para o Amazon EKS para workloads e outra com a variante de GPU para workloads que exigem suporte para GPU.

  • Se o grupo de nós gerenciados encontrar uma falha de verificação de status de uma instância do Amazon EC2, o Amazon EKS retorna uma mensagem de erro para ajudar você a diagnosticar o problema. Para obter mais informações, consulte . Managed node group errors (Erros de grupo de nós gerenciados).

  • O Amazon EKS adiciona rótulos do Kubernetes a instâncias de grupo de nós gerenciados. Esses rótulos fornecidos pelo Amazon EKS são prefixados com eks.amazonaws.com.

  • O Amazon EKS drena automaticamente os nós usando a API do Kubernetes durante os encerramentos ou atualizações. As atualizações respeitam os orçamentos de interrupção do pod definidos para seus pods.

  • Não há custos adicionais para o uso dos grupos de nós gerenciados do Amazon EKS. Você paga apenas pelo recursos da AWS que provisionar.

  • Se quiser criptografar volumes do Amazon EBS para os nós, você pode implantar os nós usando um modelo de execução. Para implantar nós gerenciados com volumes criptografados do Amazon EBS sem usar um modelo de execução, você deve criptografar todos os novos volumes do Amazon EBS criados em sua conta por padrão. Para obter mais informações, consulte Encryption by default (Criptografia por padrão) no manual do usuário do Amazon EC2 para instâncias do Linux.

Tipos de capacidade do grupo de nós gerenciados

Ao criar um grupo de nós gerenciados, você pode escolher o tipo de capacidade sob demanda ou spot. O Amazon EKS implanta um grupo de nós gerenciados com um grupo do Amazon EC2 Auto Scaling que contém apenas instâncias spot sob demanda ou apenas instâncias spot do Amazon EC2. Você pode programar pods para aplicações tolerantes a falhas em grupos de nós gerenciados Spot e aplicações intolerantes a falhas para grupos de nós sob demanda em um único cluster do Kubernetes. Por padrão, um grupo de nós gerenciados implanta instâncias do Amazon EC2 sob demanda.

Sob demanda

Com o as instâncias sob demanda, você paga pela capacidade computacional por segundo, sem nenhum compromisso em longo prazo.

Como funcionam

Por padrão, se você não especificar um Tipo de capacidade, o grupo de nós gerenciados será provisionado com instâncias sob demanda. Um grupo de nós gerenciados configura um grupo do Amazon EC2 Auto Scaling em seu nome com as seguintes configurações aplicadas:

  • A estratégia de alocação para provisionar capacidade sob demanda é definida como prioritized. O grupo de nós gerenciados usa a ordem dos tipos de instâncias transferidas na API para determinar qual tipo de instância usar primeiro para atender à capacidade sob demanda. Por exemplo, você pode especificar três tipos de instância na seguinte ordem: c5.large, c4.large e c3.large. Quando as instâncias sob demanda são iniciadas, o grupo de nós gerenciados atende à capacidade sob demanda, começando com o c5.large, depois o c4.large e, em seguida, o c3.large. Para obter mais informações, consulte Amazon EC2 Auto Scaling group (Grupo do Amazon EC2 Auto Scaling) no manual do usuário do Amazon EC2 Auto Scaling.

  • O Amazon EKS adiciona o seguinte rótulo do Kubernetes a todos os nós do grupo de nós gerenciados que especifica o tipo de capacidade: eks.amazonaws.com/capacityType: ON_DEMAND. Você pode usar esse rótulo para agendar aplicações com estado ou intolerantes a falhas em nós sob demanda.

Spot

As instâncias spot do Amazon EC2 representam uma capacidade sobressalente do Amazon EC2 que oferecem descontos substanciais nos preços sob demanda. As instâncias spot do Amazon EC2 podem ser interrompidas com um aviso de interrupção de dois minutos, quando o EC2 precisar da capacidade de volta. Para obter mais informações, consulte Spot instances (Instâncias spot) no manual do usuário do Amazon EC2 para instâncias do Linux. Você pode configurar um grupo de nós gerenciados com as instâncias spot do Amazon EC2 para otimizar os custos dos nós de computação em execução no cluster do Amazon EKS.

Como funcionam

Para usar instâncias spot dentro de um grupo de nós gerenciados, você precisa criar esse grupo definindo o tipo de capacidade como spot. Um grupo de nós gerenciados configura um grupo do Amazon EC2 Auto Scaling em seu nome com as seguintes práticas recomendadas Spot aplicadas:

  • A estratégia de alocação para provisionar a capacidade spot é definida como capacity-optimized para garantir que os nós spot sejam provisionados nos pools de capacidade spot ideais. Para aumentar o número de pools de capacidade spot disponíveis para alocação de capacidade, recomendamos que você configure um grupo de nós gerenciados para usar vários tipos de instância.

  • O Rebalanceamento de capacidade spot do Amazon EC2 está habilitado para que o Amazon EKS possa drenar e reequilibrar os nós spot para minimizar a interrupção da aplicação quando um nó spot correr um risco alto de interrupção. Para obter mais informações, consulte Amazon EC2 Auto Scaling Capacity Rebalancing (Rebalanceamento de capacidade do Amazon EC2 Auto Scaling) no manual do usuário do Amazon EC2 Auto Scaling.

    • Quando um nó spot recebe uma recomendação de rebalanceamento, o Amazon EKS tenta executar automaticamente um novo nó spot de substituição e aguarda até que ele entre no cluster com êxito.

    • Quando um nó spot de substituição inclui o bootstrap no estado Ready no Kubernetes, o Amazon EKS isola e drena o nó spot que recebeu a recomendação de rebalanceamento. Isolar o nó spot garante que o controlador de serviço não envie novas solicitações para esse nó spot. Ele também o remove da lista de nós spot íntegros e ativos. Drenar o nó spot garante que os pods em execução sejam despejados sem tranquilamente.

    • Se um aviso de interrupção do spot de dois minutos chegar antes que o nó spot de substituição esteja em um estado Ready, o Amazon EKS começa a drenar o nó spot que recebeu a recomendação de rebalanceamento.

  • O Amazon EKS adiciona o seguinte rótulo do Kubernetes a todos os nós do grupo de nós gerenciados que especifica o tipo de capacidade: eks.amazonaws.com/capacityType: SPOT. Você pode usar esse rótulo para agendar aplicações com estado ou intolerantes a falhas em nós spot.

Considerações para selecionar um tipo de capacidade

Ao decidir se deseja implantar um grupo de nós com capacidade sob demanda ou spot, você deve considerar as seguintes condições:

  • As instâncias Spot são adequadas para aplicações flexíveis sem estado, tolerantes a falhas, como workloads de treinamento em lote e machine learning, ETLs de big data, como Apache Spark, aplicações de processamento de fila e endpoints de API sem estado. Como o spot é a capacidade sobressalente do Amazon EC2, que pode ser alterada ao longo do tempo, recomendamos que você use a capacidade spot para workloads tolerantes a interrupções que possam tolerar períodos em que a capacidade necessária não esteja disponível.

  • Recomendamos que você use o tipo sob demanda para aplicações intolerantes a falhas, incluindo ferramentas de gerenciamento de clusters, como ferramentas operacionais e de monitoramento, implantações que exigem StatefulSets e aplicações com estado, como bancos de dados.

  • Para maximizar a disponibilidade de suas aplicações ao usar instâncias spot, recomendamos que você configure um grupo de nós gerenciados spot para usar vários tipos de instância. Recomendamos aplicar as seguintes regras ao usar vários tipos de instância:

    • Dentro de um grupo de nós gerenciados, se você estiver usando o Autoscaler do cluster, recomendamos o uso de um conjunto flexível de tipos de instância com a mesma quantidade de vCPU e recursos de memória para garantir que os nós do cluster sejam escalados conforme o esperado. Por exemplo, se você precisar de quatro vCPUs e oito GiB de memória, recomendamos que você use c3.xlarge, c4.xlarge, c5.xlarge, c5d.xlarge, c5a.xlarge, c5n.xlarge ou outros tipos de instância semelhantes.

    • Para melhorar a disponibilidade da aplicação, recomendamos a implantação de vários grupos de nós gerenciados spot, cada um usando um conjunto flexível de tipos de instância que tenham os mesmos recursos de vCPU e memória. Por exemplo, se você precisar de 4 vCPUs e 8 GiB de memória, recomendamos que você crie um grupo de nós gerenciados com c3.xlarge, c4.xlarge, c5.xlarge, c5d.xlarge, c5a.xlarge, c5n.xlarge ou outros tipos de instância semelhantes, e um segundo grupo de nós gerenciados com m3.xlarge, m4.xlarge, m5.xlarge, m5d.xlarge, m5a.xlarge, m5n.xlarge ou outros tipos de instância semelhantes.

    • Ao implantar o grupo de nós com o tipo de capacidade spot que estiver usando um modelo de execução personalizado, use a API para passar vários tipos de instância em vez de passar um único tipo de instância pelo modelo de execução. Para obter mais informações sobre como implantar um grupo de nós usando um modelo de execução, consulte Suporte do modelo de execução.