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