¿Cómo creo un grupo de nodos administrado mediante la AMI de Bottlerocket en Amazon EKS?

4 minutos de lectura
0

Quiero usar eksctl para lanzar Bottlerocket Amazon Machine Image (Bottlerocket AMI) para crear un grupo de nodos administrado en Amazon Elastic Kubernetes Service (Amazon EKS).

Resolución

Requisitos previos

1.    Asegúrese de tener la versión 0.124.0 o posterior de eksctl.

2.    Ejecute el siguiente comando para comprobar su versión:

$ eksctl version

Cree un archivo bottlerocket.yaml

1.    Abra la terminal donde instaló eksctl. A continuación, siga los siguientes pasos para crear un nuevo archivo.

2.    Reemplace mybottlerocket-cluster por el nombre de su clúster. El nombre solo puede contener caracteres alfanuméricos (distingue mayúsculas de minúsculas) y guiones. Debe empezar por un carácter alfabético y no puede tener más de 100 caracteres.

3.    Reemplace bottlerocket-nodegroup por un nombre para su grupo de nodos. El nombre solo puede contener caracteres alfanuméricos (distingue mayúsculas de minúsculas) y guiones. Debe empezar por un carácter alfabético y no puede tener más de 100 caracteres.

4.    Especifique el tipo de instancia. Por ejemplo, para implementarlo en una instancia ARM, reemplace m5.xlarge por un tipo de instancia ARM.

5.    Sustituya eks_bottlerocket por el nombre de un par de claves SSH de Amazon Elastic Compute Cloud (Amazon EC2). Una vez iniciados, use SSH para conectarse a los nodos.

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 los pares de claves de Amazon EC2 y las instancias de Linux.

6.    Sustituya todos los valores restantes del ejemplo por sus propios valores. Después de realizar los reemplazos, guarde el archivo 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

Nota: Puede crear grupos de nodos administrados por BottleRocket para todos los tipos de instancias predeterminados. Estos son el escalado estático (serie T), el uso general (serie M), el optimizado para computación (serie C), el optimizado para memoria (serie R) y los tipos de instancias basadas en ARM de Graviton2. La AMI de Bottlerocket no admite tipos de instancias de computación acelerada (P, G, Inf1).

Para obtener más información sobre las AMI de Bottlerocket, consulte las AMI de Bottlerocket optimizadas para Amazon EKS.

Cree el grupo de nodos y enumérelos 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 EKS junto con sus 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

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 SSM). El agente SSM de AWS se está ejecutando en el nodo porque ya ha activado el permiso de AWS SSM para la función de instancia del nodo. Para obtener más información sobre AWS SSM, consulte ¿Qué es AWS Systems Manager?

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

Inicie una sesión SSM

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

1.    Elija una de las instancias que identificó anteriormente e inicie una sesión SSM. El siguiente ejemplo muestra un comando de sesión SSM 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 Bottlerocket autogestionados

¿Qué es Amazon EKS?

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año