Ir para o conteúdo

Como uso a AMI Bottlerocket para criar um grupo de nós gerenciados no Amazon EKS?

4 minuto de leitura
0

Quero aprender a criar um grupo de nós gerenciados pela Bottlerocket no Amazon Elastic Kubernetes Service (Amazon EKS) usando o Bottlerocket Amazon Machine Image (AMI) e o eksctl.

Resolução

Pré-requisito

Antes de concluir as etapas de resolução, confirme se você tem o eksctl versão 0.124.0 ou posterior.

Para verificar sua versão, execute o seguinte comando:

$ eksctl version

Crie um arquivo bottlerocket.yaml

Abra o terminal em que você instalou o eksctl. Em seguida, use o exemplo a seguir para criar e salvar o arquivo bottlerocket.yaml.

Observação:

  • substitua mybottlerocket-cluster pelo nome do seu cluster. O nome pode conter somente hifens e caracteres alfanuméricos que diferenciam maiúsculas de minúsculas. Ele deve começar com um caractere alfabético e não pode ter mais de 100 caracteres.
  • Substitua bottlerocket-nodegroup por um nome para seu grupo de nós. O nome pode conter somente hifens e caracteres alfanuméricos que diferenciam maiúsculas de minúsculas. Ele deve começar com um caractere alfabético e não pode ter mais de 100 caracteres.
  • Especifique o tipo de instância. Por exemplo, para implantar em uma instância Arm, substitua m5.xlarge por um tipo de instância Arm.
  • Substitua eks_bottlerocket pelo nome de um par de chaves SSH do Amazon Elastic Compute Cloud (Amazon EC2). Depois de iniciar os nós, use o SSH para se conectar a eles.
    Observação: se você não tiver um par de chaves SSH do Amazon EC2, crie um no Console de Gerenciamento da AWS. Para obter mais informações, consulte Amazon EC2 key pairs and Linux instances.
---
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: mybottlerocket-cluster
  region: us-west-2
  version: '1.27'

managedNodeGroups:
  - name: bottlerocket-nodegroup
    instanceType: m5.xlarge
    minSize: 2
    maxSize: 4
    desiredCapacity: 3
    amiFamily: Bottlerocket
    labels: { role: br-worker }
    tags:
       nodegroup-type: Bottlerocket
    ssh:
      allow: true
      publicKeyName: eks_bottlerocket

Observação: você pode criar grupos de nós gerenciados pelo BottleRocket para tipos de instâncias de uso geral, otimizadas para computação, otimizadas para memória e para armazenamento. A AMI Bottlerocket não oferece suporte a tipos de instância de computação acelerada.

Crie o grupo de nós e liste seus nós no cluster EKS

  1. Execute o seguinte comando eksctl para criar um grupo de nós:

    $ eksctl create nodegroup -f bottlerocket.yaml[✔]  created 1 nodegroup(s) in cluster "mybottlerocket-cluster"
  2. Liste os nós no cluster EKS e seus atributos:

    $ kubectl get nodes -o=custom-columns=NODE:.metadata.name,ARCH:.status.nodeInfo.architecture,OS-Image:.status.nodeInfo.osImage,OS:.status.nodeInfo.operatingSystemNODE                                          ARCH    OS-Image                                OS
    ip-192-168-xx-xx.us-west-2.compute.internal   amd64   Bottlerocket OS 1.17.0 (aws-k8s-1.27)   linux
    ip-192-168-xx-xx.us-west-2.compute.internal   amd64   Bottlerocket OS 1.17.0 (aws-k8s-1.27)   linux

Conecte-se aos nós AMI do Bottlerocket (opcional)

Conecte-se aos novos nós do Bottlerocket por meio de uma sessão do AWS Systems Manager. O AWS Systems Manager Agent (SSM Agent) é executado no nó porque você já ativou a permissão do Systems Manager para a função de instância do nó. 

Execute o comando a seguir para encontrar os IDs da instância:

$ kubectl get nodes -o=custom-columns=NODE:.metadata.name,ARCH:.status.nodeInfo.architecture,OS-Image:.status.nodeInfo.osImage,OS:.status.nodeInfo.operatingSystem,InstanceId:.spec.providerIDNODE                                           ARCH    OS-Image                                OS      InstanceId
ip-192-168-xx-xx.us-west-2.compute.internal    amd64    Bottlerocket OS 1.17.0 (aws-k8s-1.27)   linux   aws:///us-west-2b/i-0cf32f13f60c2f501
ip-192-168-xx-xx.us-west-2.compute.internal    amd64    Bottlerocket OS 1.17.0 (aws-k8s-1.27)   linux   aws:///us-west-2b/i-0f31328a5d21cb092
ip-192-168-xx-xx.us-west-2.compute.internal    amd64    Bottlerocket OS 1.17.0 (aws-k8s-1.27)   linux   aws:///us-west-2b/i-08c218b729ecf9b5d

Iniciar uma sessão do Systems Manager

Por padrão, o Bottlerocket tem um contêiner de controle que é executado em uma instância separada do containerd. Esse contêiner executa o SSM Agent e permite que você execute comandos ou inicie sessões interativas de shell nos nós do Bottlerocket.

Escolha uma instância e inicie uma sessão do Systems Manager. O exemplo a seguir mostra um comando de sessão do Systems Manager para a instância i-0cf32f13f60c2f501:

$ aws ssm start-session --target i-0cf32f13f60c2f501 --region us-west-2
Starting session with SessionId: EKS-Test-User-0077e4c89ad2bc888
          Welcome to Bottlerocket's control container!

Informações relacionadas

Launching self-managed Bottlerocket nodes

O que é o Amazon EKS?

Tipos de instância (Amazon EC2)

AWS OFICIALAtualizada há 2 anos