Como faço para criar um grupo de nós gerenciados usando o Bottlerocket AMI no Amazon EKS?

4 minuto de leitura
0

Quero usar o eksctl para lançar o Bottlerocket Amazon Machine Image (Bottlerocket AMI) para criar um grupo de nós gerenciados no Amazon Elastic Kubernetes Service (Amazon EKS).

Resolução

Pré-requisito

1.    Certifique-se de que você tenha o eksctl versão 0.124.0 ou posterior.

2.    Execute o comando a seguir para verificar sua versão:

$ eksctl version

Crie um arquivo bottlerocket.yaml

1.    Abra o terminal em que você instalou o eksctl. Em seguida, conclua as etapas a seguir para criar um novo arquivo.

2.    Substitua mybottlerocket-cluster pelo nome do seu cluster. O nome pode conter somente caracteres alfanuméricos (com distinção entre maiúsculas e minúsculas) e hifens. Ele deve começar com um caractere alfabético e não pode ter mais de 100 caracteres.

3.    Substitua bottlerocket-nodegroup por um nome para seu grupo de nós. O nome pode conter somente caracteres alfanuméricos (com distinção entre maiúsculas e minúsculas) e hifens. Ele deve começar com um caractere alfabético e não pode ter mais de 100 caracteres.

4.    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.

5.    Substitua eks_bottlerocket pelo nome de um par de chaves SSH do Amazon Elastic Compute Cloud (Amazon EC2). Depois de iniciado, use o SSH para se conectar aos nós.

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 Pares de chaves do Amazon EC2 e instâncias do Linux.

6.    Substitua todos os valores restantes no exemplo por seus próprios valores. Depois de fazer as substituições, salve o arquivo bottlerocket.yaml.

---
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
 
metadata:
  name: mybottlerocket-cluster
  region: us-west-2
  version: '1.23'
 
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 todos os tipos de instância padrão. Eles são os tipos de instância de escalonamento estático (série T), de uso geral (série M), otimizado para computação (série C), otimizado para memória (série R) e os tipos de instância baseados em Graviton2 ARM. O Bottlerocket AMI não oferece suporte a tipos de instância com computação acelerada (P, G, Inf1).

Para obter mais informações sobre o Bottlerocket AMI, consulte Bottlerocket AMIs otimizadas para o Amazon EKS.

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 junto com seus atributos:

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

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

Conecte-se aos novos nós do Bottlerocket por meio de uma sessão do AWS Systems Manager (AWS SSM). O agente do AWS SSM está sendo executado no nó porque você já ativou a permissão do AWS SSM para a função de instância do nó. Para obter mais informações sobre o AWS SSM, consulte O que é o AWS Systems Manager?

1.    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.providerID
NODE                                           ARCH    OS-Image                                OS      InstanceId
ip-192-168-xx-xx.us-west-2.compute.internal    amd64   Bottlerocket OS 1.11.1 (aws-k8s-1.23)   linux   aws:///us-west-2b/i-0cf32f13f60c2f501
ip-192-168-xx-xx.us-west-2.compute.internal    amd64   Bottlerocket OS 1.11.1 (aws-k8s-1.23)   linux   aws:///us-west-2b/i-0f31328a5d21cb092
ip-192-168-xx-xx.us-west-2.compute.internal    amd64   Bottlerocket OS 1.11.1 (aws-k8s-1.23)   linux   aws:///us-west-2b/i-08c218b729ecf9b5d

Iniciar uma sessão de SSM

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

1.    Escolha uma das instâncias que você identificou anteriormente e inicie uma sessão de SSM. O exemplo a seguir mostra um comando de sessão SSM 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

Iniciar nós do Bottlerocket autogerenciados

O que é o Amazon EKS?

AWS OFICIAL
AWS OFICIALAtualizada há um ano