Comment utiliser l’AMI Bottlerocket pour créer un groupe de nœuds géré dans Amazon EKS ?

Lecture de 4 minute(s)
0

Je souhaite apprendre à créer un groupe de nœuds géré par Bottlerocket dans Amazon Elastic Kubernetes Service (Amazon EKS) à l’aide de Bottlerocket Amazon Machine Image (AMI) et eksctl.

Résolution

Prérequis

Avant de suivre les étapes de résolution, vérifiez que vous disposez de la version 0.124.0 ou ultérieure d’eksctl.

Pour vérifier votre version, exécutez la commande suivante :

$ eksctl version

Créez un fichier bottlerocket.yaml

Ouvrez le terminal sur lequel vous avez installé eksctl. Ensuite, utilisez l’exemple suivant pour créer et enregistrer le fichier bottlerocket.yaml.

Remarque :

  • Remplacez mybottlerocket-cluster par le nom de votre cluster. Le nom ne peut contenir que des tirets et des caractères alphanumériques sensibles à la casse. Il doit commencer par un caractère alphabétique et ne peut pas dépasser 100 caractères.
  • Remplacez bottlerocket-nodegroup par le nom de votre groupe de nœuds. Le nom ne peut contenir que des tirets et des caractères alphanumériques sensibles à la casse. Il doit commencer par un caractère alphabétique et ne peut pas dépasser 100 caractères.
  • Spécifiez le type d’instance. Par exemple, pour un déploiement sur une instance Arm, remplacez m5.xlarge par un type d’instance Arm.
  • Remplacez eks_bottlerocket par le nom d’une paire de clés SSH Amazon Elastic Compute Cloud (Amazon EC2). Après avoir lancé les nœuds, utilisez SSH pour vous y connecter.
    Remarque : Si vous ne possédez pas de paire de clés SSH Amazon EC2, créez-en une dans la console de gestion AWS. Pour en savoir plus, reportez-vous à la section Paires de clés Amazon EC2 et instances 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

Remarque : Vous pouvez créer des groupes de nœuds gérés par Bottlerocket pour des instances à usage général et optimisées pour le calcul, la mémoire et le stockage. L’AMI Bottlerocket ne prend pas en charge les types d’instances de calcul accéléré.

Créer un groupe de nœuds et lister les nœuds dans le cluster EKS

  1. Exécutez la commande eksctl suivante pour créer un groupe de nœuds :

    $ eksctl create nodegroup -f bottlerocket.yaml[✔]  created 1 nodegroup(s) in cluster "mybottlerocket-cluster"
  2. Listez les nœuds du cluster EKS et les attributs :

    $ 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

Connectez-vous aux nœuds AMI Bottlerocket (facultatif)

Connectez-vous aux nouveaux nœuds Bottlerocket via une session AWS Systems Manager. AWS Systems Manager Agent (SSM Agent) s’exécute sur le nœud, car vous avez déjà activé l’autorisation Systems Manager pour le rôle de l’instance de nœud. 

Exécutez la commande suivante pour rechercher les ID d’instance :

$ 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

Démarrer une session Systems Manager

Par défaut, Bottlerocket possède un conteneur de contrôle qui s’exécute sur une instance distincte de containerd. Ce conteneur exécute l’agent SSM et vous permet d’exécuter des commandes ou de démarrer des sessions shell interactives sur les nœuds Bottlerocket.

Choisissez une instance et lancez une session Systems Manager. L’exemple suivant montre une commande de session Systems Manager pour l'instance 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!

Informations connexes

Lancement de nœuds Bottlerocket autogérés

Qu’est-ce qu’Amazon EKS ?

Types d’instances (Amazon EC2)

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 9 mois