Ir para o conteúdo

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

3 minuto de leitura
0

Quero usar a AMI Bottlerocket para criar um grupo de nós gerenciados no Amazon Elastic Kubernetes Service (Amazon EKS).

Resolução

É possível usar eksctl com um arquivo de configuração para criar um grupo de nós gerenciados do Bottlerocket.

Pré-requisitos

  • Use eksctl versão 0.124.0 ou posterior
  • Um cluster existente do Amazon EKS
  • Se você quiser acesso SSH aos nós, precisa de um par de chaves SSH do Amazon Elastic Compute Cloud (Amazon EC2)

Para usar a AMI Bottlerocket para criar um grupo de nós gerenciados, conclua as seguintes etapas:

Verifique a versão do eksctl

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

eksctl version

Se você precisar instalar ou fazer upgrade do eksctl, consulte Opções de instalação para Eksctl.

Crie o arquivo de configuração

Importante: o Bottlerocket oferece suporte a tipos de instância de uso geral, otimizadas para computador, para memória e para armazenamento. O Bottlerocket não oferece suporte a instâncias com computação acelerada.

Crie um arquivo chamado bottlerocket.yaml com a seguinte configuração:

---
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: mybottlerocket-cluster
  region: your-region
  version: '1.31'

iam:
  withOIDC: true

nodeGroups:
  - name: ng-bottlerocket
    instanceType: m5.large
    desiredCapacity: 3
    amiFamily: Bottlerocket
    ami: auto-ssm
    iam:
       attachPolicyARNs:
          - arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy
          - arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly
          - arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore
          - arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy
    ssh:
        allow: true
        publicKeyName: your-ec2-keypair-name

Observação: substitua mybottlerocket-cluster pelo nome do seu cluster. Substitua your-region pela sua região da AWS. Substitua your-ec2-keypair-name pelo nome do seu par de chaves SSH do Amazon EC2. Se você não tiver um par de chaves do Amazon EC2, consulte Criar um par de chaves para sua instância do Amazon EC2.

Crie o grupo de nós gerenciados

Para criar o grupo de nós gerenciados, execute o seguinte comando:

eksctl create nodegroup --config-file=bottlerocket.yaml

O comando cria o grupo de nós e registra os nós em seu cluster. Esse processo leva vários minutos para ser concluído.

Verifique os nós

Para verificar se os nós estão em execução, execute o seguinte comando:

kubectl get nodes -o wide

A saída mostra seus nós do Bottlerocket com seus status, versão do Kubernetes e informações do sistema operacional.

Exemplo de saída:

NAME                                           STATUS   ROLES    AGE   VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE                                       KERNEL-VERSION   CONTAINER-RUNTIME
ip-[IP_ADDRESS].us-west-2.compute.internal   Ready    <none>   5m    v1.31.0   [IP_ADDRESS] <none>        Bottlerocket OS 1.20.0 (aws-k8s-1.31)        5.15.0           containerd://1.7.11

Conecte-se aos nós do Bottlerocket

Os nós do Bottlerocket não incluem um servidor SSH ou shell por padrão. Para se conectar aos nós do Bottlerocket para solucionar problemas, use o Gerenciador de sessões do AWS Systems Manager.

Para se conectar a um nó do Bottlerocket, conclua as seguintes etapas:

  1. Recupere o ID da instância do seu nó do Bottlerocket no console do Amazon EC2 ou executando o seguinte comando:

    kubectl get nodes -o wide
  2. Use o ID da instância para iniciar uma sessão do Gerenciador de sessões. Para obter mais informações sobre como iniciar uma sessão, consulte Iniciar uma sessão (console do Systems Manager).

Observação: a política do IAM AmazonSSMManagedInstanceCore na configuração do grupo de nós permite que o Gerenciador de sessões acesse seus nós do Bottlerocket.

Informações relacionadas

Criar nós Bottlerocket autogerenciados do Bottlerocket

Simplificar o ciclo de vida dos nós com grupos de nós gerenciados

Using a Bottlerocket AMI with Amazon EKS (Usando uma AMI Bottlerocket no Amazon EKS) no site do github

AWS OFICIALAtualizada há 9 meses