Comment créer un groupe de nœuds géré à l'aide de l'AMI Bottlerocket dans Amazon EKS ?

Lecture de 4 minute(s)
0

Je souhaite utiliser eksctl pour lancer Amazon Machine Image Bottlerocket (AMI Bottlerocket) afin de créer un groupe de nœuds géré dans Amazon Elastic Kubernetes Service (Amazon EKS).

Résolution

Préalable

1.    Assurez-vous que vous avez eksctl version 0.124.0 ou ultérieure.

2.    Exécutez la commande suivante pour vérifier votre version :

$ eksctl version

Créez un fichier bottlerocket.yaml

1.    Ouvrez le terminal sur lequel vous avez installé eksctl. Ensuite, suivez les étapes suivantes pour créer un nouveau fichier.

2.    Remplacez mybottlerocket-cluster par le nom de votre cluster. Le nom ne peut contenir que des caractères alphanumériques (sensibles à la casse) et des traits d'union. Il doit commencer par un caractère alphabétique et ne doit pas dépasser 100 caractères.

3.    Remplacez bottlerocket-nodegroup par le nom de votre groupe de nœuds. Le nom ne peut contenir que des caractères alphanumériques (sensibles à la casse) et des traits d'union. Il doit commencer par un caractère alphabétique et ne doit pas dépasser 100 caractères.

4.    Indiquez ensuite le type d'instance. Par exemple, pour déployer sur une instance ARM, remplacez m5.xlarge par un type d'instance ARM.

5.    Remplacez eks_bottlerocket par le nom d'une paire de clés SSH Amazon Elastic Compute Cloud (Amazon EC2). Une fois qu'ils sont lancés, utilisez SSH pour vous connecter aux nœuds.

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 plus d'informations, consultez les Paires de clés Amazon EC2 et instances Linux.

6.    Remplacez toutes les valeurs restantes de l'exemple par vos propres valeurs. Après avoir effectué les remplacements, enregistrez le fichier 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

Remarque : Vous pouvez créer des groupes de nœuds gérés par BottleRocket pour tous les types d'instances par défaut. Il s'agit de la mise à l'échelle statique (série T), de la mise à l'échelle à usage général (série M), de l'optimisation du calcul (série C), de l'optimisation de la mémoire (série R) et des types d'instance basés sur Graviton2 ARM. L'AMI Bottlerocket ne prend pas en charge les types d'instance de calcul accéléré (P, G, Inf1).

Pour plus d'informations sur l'AMI Bottlerocket, consultez les AMI Bottlerocket optimisées pour Amazon EKS.

Créez le groupe de nœuds et répertoriez ses 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.    Répertoriez les nœuds du cluster EKS ainsi que vos attributs :

$ 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

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

Connectez-vous aux nouveaux nœuds Bottlerocket via une session AWS Systems Manager (AWS SSM). L'agent AWS SSM s'exécute sur le nœud car vous avez déjà activé l'autorisation AWS SSM pour le rôle d'instance de nœud. Pour plus d'informations sur AWS SSM, consultez Qu'est-ce qu'AWS Systems Manager ?

1.    Exécutez la commande suivante pour trouver les ID de l'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.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

Démarrer une session SSM

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 AWS SSM et vous permet d'exécuter des commandes ou de démarrer des sessions shell interactives sur les nœuds Bottlerocket.

1.    Choisissez l'une des instances que vous avez identifiées précédemment et lancez une session SSM. L'exemple suivant montre une commande de session SSM 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

Définition d'Amazon EKS

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an