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
-
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"
-
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)