¿Cómo utilizo la AMI de Bottlerocket para crear un grupo de nodos gestionado en Amazon EKS?

4 minutos de lectura
0

Quiero aprender a crear un grupo de nodos gestionado por Bottlerocket en Amazon Elastic Kubernetes Service (Amazon EKS) con la imagen de máquina de Amazon (AMI) de Bottlerocket y eksctl.

Resolución

Requisito previo

Antes de completar los pasos de resolución, confirme que tiene la versión 0.124.0 o posterior de eksctl.

Para comprobar la versión, ejecute el siguiente comando:

$ eksctl version

Cree un archivo bottlerocket.yaml

Abra la terminal en la que instaló eksctl. A continuación, use el siguiente ejemplo para crear y guardar el archivo bottlerocket.yaml.

Nota:

  • Sustituya mybottlerocket-cluster por el nombre de su clúster. El nombre solo puede contener guiones y caracteres alfanuméricos que distingan entre mayúsculas y minúsculas. Debe comenzar con un carácter alfabético y no puede tener más de 100 caracteres.
  • Sustituya bottlerocket-nodegroup por un nombre para su grupo de nodos. El nombre solo puede contener guiones y caracteres alfanuméricos que distingan entre mayúsculas y minúsculas. Debe comenzar con un carácter alfabético y no puede tener más de 100 caracteres.
  • Especifique el tipo de instancia. Por ejemplo, para implementar en una instancia de Arm, reemplace m5.xlarge por un tipo de instancia de Arm.
  • Sustituya eks_bottlerocket por el nombre de un par de claves SSH de Amazon Elastic Compute Cloud (Amazon EC2). Después de lanzar los nodos, utilice SSH para conectarse a ellos.
    Nota: Si no tiene un par de claves SSH de Amazon EC2, cree uno en la consola de administración de AWS. Para obtener más información, consulte Pares de claves de Amazon EC2 e instancias de Linux.
---
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

Nota: Puede crear grupos de nodos administrados por Bottlerocket para tipos de instancias de uso general, optimizadas para computación, optimizadas para memoria y optimizadas para almacenamiento. La AMI de Bottlerocket no admite los tipos de instancias de computación acelerada.

Cree el grupo de nodos y enumere sus nodos en el clúster EKS

  1. Ejecute el siguiente comando eksctl para crear un grupo de nodos:

    $ eksctl create nodegroup -f bottlerocket.yaml[✔]  created 1 nodegroup(s) in cluster "mybottlerocket-cluster"
  2. Enumere los nodos del clúster de EKS y sus 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

Conéctese a los nodos AMI de Bottlerocket (opcional)

Conéctese a los nuevos nodos de Bottlerocket mediante una sesión de AWS Systems Manager. AWS Systems Manager Agent (SSM Agent) se ejecuta en el nodo porque ya ha activado el permiso de Systems Manager para la función de instancia del nodo. 

Ejecute el siguiente comando para buscar los ID de instancia:

$ 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 una sesión de Systems Manager

De forma predeterminada, Bottlerocket tiene un contenedor de control que se ejecuta en una instancia independiente de containerd. Este contenedor ejecuta SSM Agent y le permite ejecutar comandos o iniciar sesiones de shell interactivas en los nodos de Bottlerocket.

Elija una instancia e inicie una sesión de Systems Manager. El siguiente ejemplo muestra un comando de sesión de Systems Manager para la instancia 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!

Información relacionada

Lanzamiento de nodos de Bottlerocket autoadministrados

¿Qué es Amazon EKS?

Tipos de instancias (Amazon EC2)

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 10 meses